四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

PHP中讀取照片exif信息的方法

先來了解什么是圖片的Exif信息

Exif是一種圖象文件格式,它的數(shù)據(jù)存儲(chǔ)與JPEG格式是完全相同的。實(shí)際上Exif格式就是在JPEG格式頭部插入了數(shù)碼照片的信息,包括拍攝時(shí)的光圈、快門、白平衡、ISO、焦距、日期時(shí)間等各種和拍攝條件以及相機(jī)品牌、型號(hào)、色彩編碼、拍攝時(shí)錄制的聲音以及全球定位系統(tǒng)(GPS)、縮略圖等。簡(jiǎn)單地說,Exif=JPEG+拍攝參數(shù)。因此,你可以利用任何可以查看JPEG文件的看圖軟件瀏覽Exif格式的照片,但并不是所有的圖形程序都能處理Exif信息。

以上引自百度百科。

讀取照片的exif在很多時(shí)候都沒有必要,但相對(duì)于一些探討攝影技術(shù)的站點(diǎn),那么讀取照片的exif信息就顯得尤為重要了,比如攝影論壇蜂鳥。

截圖自蜂鳥論壇,紅圈信息部分就是程序讀取照片的exif信息。我們把圖片下載到本地,使用光影魔術(shù)手打開圖片看看它的Exif信息,當(dāng)BG然除了光影還有很多工具都能查看圖片的Exif值。

除了Exif信息里的鏡頭值讀不出來以外其余的值都能正確讀出來。

開啟php模塊

默認(rèn)情況下,php讀取圖片Exif信息模塊是不開啟的,我們需要先開啟這個(gè)模塊。

開啟Exif模塊需要mbstring支持,所以先來安裝mbstring,以下是以Linux環(huán)境為例,其它環(huán)境類似。

安裝mbstring模塊

首先找到php源碼包位置,直接進(jìn)入ext/mbstring,執(zhí)行以下命令安裝,具體參數(shù)得看自己的環(huán)境。

復(fù)制代碼 代碼如下:
[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]#

安裝好以后,我們可以進(jìn)入extensions目錄看看模塊是否存在,存在表示安裝成功。
復(fù)制代碼 代碼如下:
[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進(jìn)去并配置安裝,具體參數(shù)得看自己的環(huán)境。
復(fù)制代碼 代碼如下:
[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]#

進(jìn)入extensions目錄驗(yàn)證是否安裝成功

復(fù)制代碼 代碼如下:
[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模塊已經(jīng)存在。

php.ini中添加模塊
打開php.ini添加以下兩行
復(fù)制代碼 代碼如下:extension = "mbstring.so"
extension = "exif.so"

并且確認(rèn)你的extension_dir值與你安裝模塊時(shí)提示的Installing shared extensions值一致,比如我安裝模塊時(shí)提示我的extensions位置是
復(fù)制代碼 代碼如下:/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
那么你的php.ini里的extension_dir要指向正確目錄
復(fù)制代碼 代碼如下:extension_dir="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/"
保存php.ini,重啟webserver。
打開phpinfo()找到相應(yīng)屬性看看是否已正常工作

正常情況下你會(huì)看到如下兩個(gè)模塊信息

使用exif_read_data()讀取圖片的exif信息

支持讀取exif信息的圖片類型在phpinfo里已經(jīng)寫明了,只能是jpeg或者tiff類型,其中jpeg是常用類型,這就已經(jīng)足夠。
我們來看看exif_read_data()函數(shù)的使用手冊(cè)
復(fù)制代碼 代碼如下:
array exif_read_data ( string $filename [, string $sections = NULL [, bool $arrays = false [, bool $thumbnail = false ]]] )

參數(shù):

filename :要讀取圖片exif信息的圖片路徑,這里不能是URL
sections:是需要存在于文件中的逗號(hào)分隔的區(qū)段列表用來產(chǎn)生結(jié)果數(shù)組。如果未找到所請(qǐng)求的區(qū)段則返回值為 FALSE。

FILE FileName, FileSize, FileDateTime, SectionsFound
COMPUTED html,Width,Height,IsColor,可能有更多其它的。Height 和 Width 是用和 getimagesize() 一樣的方法計(jì)算的,因此它們的值不能是任何返回的頭信息的部分。此外 html 是一個(gè) height/width 的文本字符串可以用于普通的HTML 中。
ANY_TAG 任何包含有標(biāo)記的信息,例如 IFD0,EXIF,...
IFD0 所有 IFD0 的標(biāo)記數(shù)據(jù)。在標(biāo)準(zhǔn)的圖像文件中這包含了圖像大小及其它。
THUMBNAIL 如果有第二個(gè) IFD,文件應(yīng)該包含有縮略圖。所有有關(guān)嵌入縮略圖的標(biāo)記信息都存儲(chǔ)在本區(qū)。
COMMENT JPEG 圖像的注釋頭信息。
EXIF EXIF 區(qū)段是 IFDO 的子區(qū),包含有圖像的更多詳細(xì)信息。大多數(shù)內(nèi)容都是數(shù)碼相機(jī)相關(guān)的。

arrays :指定了是否每個(gè)區(qū)段都成為一個(gè)數(shù)組。sections COMPUTED,THUMBNAIL 和COMMENT 區(qū)段總是成為數(shù)組,因?yàn)樗鼈兝锩姘拿趾推渌鼌^(qū)段沖突。

thumbnail : 當(dāng)設(shè)定為 TRUE 時(shí),讀取縮略圖本身。否則只讀取標(biāo)記數(shù)據(jù)。
 
我們來讀取一張圖片的exif信息試試
復(fù)制代碼 代碼如下:
<?php
$exif = getExif('a.jpg');
echo '<pre>';
print_r($exif);
echo '</pre>';

執(zhí)行結(jié)果:
復(fù)制代碼 代碼如下:
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
)

如果提示:
復(fù)制代碼 代碼如下:
Fatal error: Call to undefined function exif_read_data() in /data0/htdocs/www/exif/index.php on line 2

則表示模塊沒有打開,可能是你配置哪一塊沒有配置好,重新配置就好。

從Exif信息讀取結(jié)果中取出有用的信息

從以上的執(zhí)行結(jié)果我們發(fā)現(xiàn)圖片Exif很多,我們只需要從中過濾掉垃圾信息剩下有用的就好。本例就以常用的參數(shù)為前提寫一個(gè)php函數(shù)。常用的參數(shù)包括快門,器材名稱,光圈,感光度,焦距:

復(fù)制代碼 代碼如下:
<?php
/**
 * 讀取jpeg圖片的Exif信息
 * $img 為圖片路徑
 *
 * 瓊臺(tái)博客
 */
 
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']
    );
 
}

讀取照片

復(fù)制代碼 代碼如下:
<?php
$exifInfo = getExif('a.jpg');
echo '<pre>';
print_r($exifInfo);
echo '</pre>';

執(zhí)行結(jié)果:
復(fù)制代碼 代碼如下:
Array
(
    [文件名] => 25556306.jpg
    [器材品牌] => NIKON CORPORATION
    [器材] => NIKON D3100
    [快門] => 10/32000
    [光圈] => 18/10
    [焦距] => 350/10
    [感光度] => 100
)

其它說明

圖片的Exif值是可以通過相應(yīng)工具修改的,所以使用程序讀取圖片的Exif值只能用做參考,不做真實(shí)依據(jù)。

感興趣的朋友也可以訪問在線讀取Exif信息網(wǎng)站http://exif.cn玩玩

通過php模塊讀取的Exif信息偶爾會(huì)錯(cuò),或者信息不全,這種情況下,我們可以通過第三方工具。然后利用php執(zhí)行系統(tǒng)linux命令讀取

php技術(shù)PHP中讀取照片exif信息的方法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 湖北卫视在线直播| 电视剧火流星演员表| 电视剧暗夜与黎明剧情介绍| 放烟花的视频| 张雅玲| 杨颖电影| 绿门背后| 281封信电视剧演员表| 香港九龙图库精选资料| 老男人gay同性gay做受| kanako| 上海东方卫视节目表| 电商运营计划| 地下道的美人鱼| 寡妇高潮一级片免费看| 追捕演员表| 违规吃喝问题研讨发言材料| 猫电影| 树屋上的童真| 高地1—36集电视剧免费观看剧情| 陈宝莲徐锦江夜半2普通话| 鲁滨逊漂流记阅读笔记| 吴京电影全集完整版喜剧| 学生基本情况分析| 易烊千玺个人简历资料| 极品少妇啪啪久久蜜臀| 血色残阳剧情简介| 男同操男同| 红缨是什么意思| 新爱情乐园| 昌秀 电影| 全能住宅改造王| 牵牛花的生长变化记录| 寡妇一级毛片视频| 夜魔3| 战狼7| 白皮书电影| 新有菜免费在线观看| 夕阳老人视频| 步步惊心剧照| 黛博拉·安沃尔|