cari
Rumahpembangunan bahagian belakangtutorial phpPHP中读取照片exif信息的方法,_PHP教程

PHP中读取照片exif信息的方法,

先来了解什么是图片的Exif信息

Exif是一种图象文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及全球定位系统(GPS)、缩略图等。简单地说,Exif=JPEG+拍摄参数。因此,你可以利用任何可以查看JPEG文件的看图软件浏览Exif格式的照片,但并不是所有的图形程序都能处理Exif信息。

以上引自百度百科。

读取照片的exif在很多时候都没有必要,但相对于一些探讨摄影技术的站点,那么读取照片的exif信息就显得尤为重要了,比如摄影论坛蜂鸟。

截图自蜂鸟论坛,红圈信息部分就是程序读取照片的exif信息。我们把图片下载到本地,使用光影魔术手打开图片看看它的Exif信息,当BG然除了光影还有很多工具都能查看图片的Exif值。

除了Exif信息里的镜头值读不出来以外其余的值都能正确读出来。

开启PHP模块

默认情况下,PHP读取图片Exif信息模块是不开启的,我们需要先开启这个模块。

开启Exif模块需要mbstring支持,所以先来安装mbstring,以下是以Linux环境为例,其它环境类似。

安装mbstring模块

首先找到php源码包位置,直接进入ext/mbstring,执行以下命令安装,具体参数得看自己的环境。

复制代码 代码如下:

[root@lee ext]# cd /data0/software/php/ext/mbstring
[root@lee mbstring]# /usr/local/webserver/php/bin/phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
[root@lee exif]# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
[root@lee mbstring]# make && make install
Installing shared extensions:     /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
Installing header files:          /usr/local/webserver/php/include/php/
[root@lee mbstring]#

安装好以后,我们可以进入extensions目录看看模块是否存在,存在表示安装成功。

复制代码 代码如下:

[root@lee mbstring]# cd /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
[root@lee no-debug-non-zts-20090626]# ll
总用量 1880
-rwxr-xr-x. 1 root root  414405 6月  12 2012 eaccelerator.so
-rwxr-xr-x. 1 root root 1091242 9月  23 2011 imagick.so
-rwxr-xr-x. 1 root root    5285 2月  20 15:07 mbstring.so
-rwxr-xr-x. 1 root root  246752 9月  23 2011 memcache.so
-rwxr-xr-x. 1 root root  154252 9月  23 2011 pdo_mysql.so

安装exif模块

同安装mbstring模块类似,先找到源码位置并cd进去并配置安装,具体参数得看自己的环境。

复制代码 代码如下:

[root@lee exif]# cd /data0/software/php-5.3.13/ext/exif
[root@lee exif]# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
[root@lee exif]# make && make install
Installing shared extensions:     /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
[root@lee exif]#

进入extensions目录验证是否安装成功

复制代码 代码如下:

[root@lee exif]# cd /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
[root@lee no-debug-non-zts-20090626]# ll
总用量 2036
-rwxr-xr-x. 1 root root  414405 6月  12 2012 eaccelerator.so
-rwxr-xr-x. 1 root root  158554 2月  20 15:25 exif.so
-rwxr-xr-x. 1 root root 1091242 9月  23 2011 imagick.so
-rwxr-xr-x. 1 root root    5285 2月  20 15:07 mbstring.so
-rwxr-xr-x. 1 root root  246752 9月  23 2011 memcache.so
-rwxr-xr-x. 1 root root  154252 9月  23 2011 pdo_mysql.so
[root@lee no-debug-non-zts-20090626]#

exif.so模块已经存在。

在php.ini中添加模块
打开php.ini添加以下两行

复制代码 代码如下:
extension = "mbstring.so"
extension = "exif.so"

并且确认你的extension_dir值与你安装模块时提示的Installing shared extensions值一致,比如我安装模块时提示我的extensions位置是
复制代码 代码如下:
/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/

那么你的php.ini里的extension_dir要指向正确目录
复制代码 代码如下:
extension_dir="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/"

保存php.ini,重启webserver。
打开phpinfo()找到相应属性看看是否已正常工作

正常情况下你会看到如下两个模块信息

使用exif_read_data()读取图片的exif信息

支持读取exif信息的图片类型在phpinfo里已经写明了,只能是jpeg或者tiff类型,其中jpeg是常用类型,这就已经足够。
我们来看看exif_read_data()函数的使用手册

复制代码 代码如下:

array exif_read_data ( string $filename [, string $sections = NULL [, bool $arrays = false [, bool $thumbnail = false ]]] )

参数:

filename :要读取图片exif信息的图片路径,这里不能是URL
sections:是需要存在于文件中的逗号分隔的区段列表用来产生结果数组。如果未找到所请求的区段则返回值为 FALSE。

FILE FileName, FileSize, FileDateTime, SectionsFound
COMPUTED html,Width,Height,IsColor,可能有更多其它的。Height 和 Width 是用和 getimagesize() 一样的方法计算的,因此它们的值不能是任何返回的头信息的部分。此外 html 是一个 height/width 的文本字符串可以用于普通的HTML 中。
ANY_TAG 任何包含有标记的信息,例如 IFD0,EXIF,...
IFD0 所有 IFD0 的标记数据。在标准的图像文件中这包含了图像大小及其它。
THUMBNAIL 如果有第二个 IFD,文件应该包含有缩略图。所有有关嵌入缩略图的标记信息都存储在本区。
COMMENT JPEG 图像的注释头信息。
EXIF EXIF 区段是 IFDO 的子区,包含有图像的更多详细信息。大多数内容都是数码相机相关的。

arrays :指定了是否每个区段都成为一个数组。sections COMPUTED,THUMBNAIL 和COMMENT 区段总是成为数组,因为它们里面包含的名字和其它区段冲突。

thumbnail : 当设定为 TRUE 时,读取缩略图本身。否则只读取标记数据。
 
我们来读取一张图片的exif信息试试

复制代码 代码如下:

$exif = getExif('a.jpg');
echo '
';<br>
print_r($exif);<br>
echo '
';

执行结果:
复制代码 代码如下:

Array
(
    [FileName] => a.jpg
    [FileDateTime] => 1361340032
    [FileSize] => 69170
    [FileType] => 2
    [MimeType] => image/jpeg
    [SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF, GPS, INTEROP
    [COMPUTED] => Array
        (
            [html] => width="600" height="397"
            [Height] => 397
            [Width] => 600
            [IsColor] => 1
            [ByteOrderMotorola] => 1
            [ApertureFNumber] => f/13.0
            [FocusDistance] => 3.76m
            [UserComment] =>
            [UserCommentEncoding] => ASCII
            [Copyright] =>                                                     
            [Thumbnail.FileType] => 2
            [Thumbnail.MimeType] => image/jpeg
        )
    [ImageWidth] => 4928
    [ImageLength] => 3264
    [BitsPerSample] => Array
        (
            [0] => 8
            [1] => 8
            [2] => 8
        )
    [PhotometricInterpretation] => 2
    [Make] => NIKON CORPORATION
    [Model] => NIKON D7000
    [Orientation] => 1
    [SamplesPerPixel] => 3
    [XResolution] => 3000000/10000
    [YResolution] => 3000000/10000
    [ResolutionUnit] => 2
    [Software] => Adobe Photoshop CS5 Windows
    [DateTime] => 2013:02:18 20:50:46
    [WhitePoint] => Array
        (
            [0] => 313/1000
            [1] => 329/1000
        )
    [PrimaryChromaticities] => Array
        (
            [0] => 64/100
            [1] => 33/100
            [2] => 21/100
            [3] => 71/100
            [4] => 15/100
            [5] => 6/100
        )
    [YCbCrCoefficients] => Array
        (
            [0] => 299/1000
            [1] => 587/1000
            [2] => 114/1000
        )
    [YCbCrPositioning] => 2
    [Copyright] =>                                                     
    [Exif_IFD_Pointer] => 500
    [GPS_IFD_Pointer] => 1248
    [THUMBNAIL] => Array
        (
            [Compression] => 6
            [XResolution] => 72/1
            [YResolution] => 72/1
            [ResolutionUnit] => 2
            [JPEGInterchangeFormat] => 1362
            [JPEGInterchangeFormatLength] => 4784
        )
    [ExposureTime] => 40/10
    [FNumber] => 130/10
    [ExposureProgram] => 1
    [ISOSpeedRatings] => 1000
    [UndefinedTag:0x8830] => 2
    [ExifVersion] => 0230
    [DateTimeOriginal] => 2013:02:14 21:12:08
    [DateTimeDigitized] => 2013:02:14 21:12:08
    [ComponentsConfiguration] =>
    [CompressedBitsPerPixel] => 4/1
    [ShutterSpeedValue] => -2/1
    [ApertureValue] => 7400879/1000000
    [ExposureBiasValue] => 2/6
    [MaxApertureValue] => 36/10
    [SubjectDistance] => 376/100
    [MeteringMode] => 3
    [LightSource] => 0
    [Flash] => 16
    [FocalLength] => 180/10
    [UserComment] => ASCII
    [SubSecTime] => 10
    [SubSecTimeOriginal] => 10
    [SubSecTimeDigitized] => 10
    [FlashPixVersion] => 0100
    [ColorSpace] => 65535
    [ExifImageWidth] => 600
    [ExifImageLength] => 397
    [InteroperabilityOffset] => 1216
    [SensingMethod] => 2
    [FileSource] =>
    [SceneType] =>
    [CFAPattern] =>
    [CustomRendered] => 0
    [ExposureMode] => 1
    [WhiteBalance] => 0
    [DigitalZoomRatio] => 1/1
    [FocalLengthIn35mmFilm] => 27
    [SceneCaptureType] => 0
    [GainControl] => 2
    [Contrast] => 0
    [Saturation] => 0
    [Sharpness] => 0
    [SubjectDistanceRange] => 0
    [UndefinedTag:0xA500] => 22/10
    [GPSVersion] =>
    [InterOperabilityIndex] => R03
    [InterOperabilityVersion] => 0100
)

如果提示:

复制代码 代码如下:

Fatal error: Call to undefined function exif_read_data() in /data0/htdocs/www/exif/index.php on line 2

则表示模块没有打开,可能是你配置哪一块没有配置好,重新配置就好。

从Exif信息读取结果中取出有用的信息

从以上的执行结果我们发现图片Exif很多,我们只需要从中过滤掉垃圾信息剩下有用的就好。本例就以常用的参数为前提写一个PHP函数。常用的参数包括快门,器材名称,光圈,感光度,焦距:

复制代码 代码如下:

/**
 * 读取jpeg图片的Exif信息
 * $img 为图片路径
 *
 * 琼台博客
 */
 
function getExif($img){
    
    $exif = exif_read_data($img, 'IFD0');
 
    return array (
        '文件名' => $exif['FileName'],
        '器材品牌' => $exif['Make'],
        '器材' => $exif['Model'],
        '快门' => $exif['ExposureTime'],
        '光圈' => $exif['FNumber'],
        '焦距' => $exif['FocalLength'],
        '感光度' => $exif['ISOSpeedRatings']
    );
 
}

读取照片

复制代码 代码如下:

$exifInfo = getExif('a.jpg');
echo '
';<br>
print_r($exifInfo);<br>
echo '
';

执行结果:
复制代码 代码如下:

Array
(
    [文件名] => 25556306.jpg
    [器材品牌] => NIKON CORPORATION
    [器材] => NIKON D3100
    [快门] => 10/32000
    [光圈] => 18/10
    [焦距] => 350/10
    [感光度] => 100
)

其它说明

图片的Exif值是可以通过相应工具修改的,所以使用程序读取图片的Exif值只能用做参考,不做真实依据。

感兴趣的朋友也可以访问在线读取Exif信息网站http://exif.cn玩玩

通过PHP模块读取的Exif信息偶尔会错,或者信息不全,这种情况下,我们可以通过第三方工具。然后利用php执行系统linux命令读取

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/866676.htmlTechArticlePHP中读取照片exif信息的方法, 先来了解什么是图片的Exif信息 Exif是一种图象文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exi...
Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
PHP dalam Tindakan: Contoh dan aplikasi dunia nyataPHP dalam Tindakan: Contoh dan aplikasi dunia nyataApr 14, 2025 am 12:19 AM

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

PHP: Membuat kandungan web interaktif dengan mudahPHP: Membuat kandungan web interaktif dengan mudahApr 14, 2025 am 12:15 AM

PHP menjadikannya mudah untuk membuat kandungan web interaktif. 1) Secara dinamik menjana kandungan dengan memasukkan HTML dan paparkannya dalam masa nyata berdasarkan input pengguna atau data pangkalan data. 2) Penyerahan borang proses dan menjana output dinamik untuk memastikan bahawa htmlspecialchars digunakan untuk mencegah XSS. 3) Gunakan MySQL untuk membuat sistem pendaftaran pengguna, dan gunakan kata laluan dan preprocessing untuk meningkatkan keselamatan. Menguasai teknik ini akan meningkatkan kecekapan pembangunan web.

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popularPHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popularApr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Relevannya PHP: Adakah ia masih hidup?Relevannya PHP: Adakah ia masih hidup?Apr 14, 2025 am 12:12 AM

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

Status Semasa PHP: Lihat trend pembangunan webStatus Semasa PHP: Lihat trend pembangunan webApr 13, 2025 am 12:20 AM

PHP tetap penting dalam pembangunan web moden, terutamanya dalam pengurusan kandungan dan platform e-dagang. 1) PHP mempunyai ekosistem yang kaya dan sokongan rangka kerja yang kuat, seperti Laravel dan Symfony. 2) Pengoptimuman prestasi boleh dicapai melalui OPCACHE dan NGINX. 3) Php8.0 memperkenalkan pengkompil JIT untuk meningkatkan prestasi. 4) Aplikasi awan asli dikerahkan melalui Docker dan Kubernet untuk meningkatkan fleksibiliti dan skalabiliti.

PHP vs Bahasa Lain: PerbandinganPHP vs Bahasa Lain: PerbandinganApr 13, 2025 am 12:19 AM

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP vs Python: Ciri dan Fungsi TerasPHP vs Python: Ciri dan Fungsi TerasApr 13, 2025 am 12:16 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri dan sesuai untuk senario yang berbeza. 1.PHP sesuai untuk pembangunan web dan menyediakan pelayan web terbina dalam dan perpustakaan fungsi yang kaya. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan standard yang kuat. Apabila memilih, ia harus diputuskan berdasarkan keperluan projek.

PHP: Bahasa utama untuk pembangunan webPHP: Bahasa utama untuk pembangunan webApr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa