免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

利用PHP讀取到圖片的EXIF信息的方法是什么

這篇文章主要講解了“利用PHP讀取到圖片的EXIF信息的方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“利用PHP讀取到圖片的EXIF信息的方法是什么”吧!

創(chuàng)新互聯(lián)專業(yè)提供成都主機(jī)托管四川主機(jī)托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價(jià)格,機(jī)房位于中國(guó)電信/網(wǎng)通/移動(dòng)機(jī)房,成都服務(wù)器托管服務(wù)有保障!

利用PHP讀取到圖片的EXIF信息的方法是什么

在我們拍的照片以及各類圖像文件中,其實(shí)還保存著一些信息是無(wú)法直觀看到的,比如手機(jī)拍照時(shí)會(huì)有的位置信息,圖片的類型、大小等,這些信息就稱為 EXIF 信息。一般 JPG 、 TIFF 這類的圖片文件都會(huì)有這樣的信息。EXIF 其實(shí)就是專門(mén)為這種數(shù)碼照片所定制的,專門(mén)用于記錄數(shù)碼照片的屬性信息和拍攝數(shù)據(jù)的,最初由日本制定。這個(gè)其實(shí)很好理解,日本對(duì)相機(jī)行業(yè)基本是壟斷般的存在,所以這類的標(biāo)準(zhǔn)當(dāng)然就是由他們制定啦!

EXIF 在 Windows 系統(tǒng)中具有原生的支持,鼠標(biāo)右鍵點(diǎn)擊圖片打開(kāi)菜單,然后點(diǎn)擊屬性并切換到詳細(xì)信息就可以直接看到圖片文件的 EXIF 信息了。由于這些信息是可以被隨意編輯的,所以它們可以作為一些參考,并不能作為某些功能屬性的確定值來(lái)獲取,比如寬高這些信息就不要完全相信 EXIF 中的。

獲取 EXIF 中的圖片類型信息

首先,我們看下通過(guò) EXIF 來(lái)查看圖片的類型。

var_dump(exif_imagetype($png)); // int(3)
echo exif_imagetype($png) == IMAGETYPE_PNG ? $png . '是 PNG 圖片' : $png . '不是 PNG 圖片', PHP_EOL;
// ../img/1.png是 PNG 圖片

var_dump(exif_imagetype($jpg)); // int(2)
echo exif_imagetype($jpg) == IMAGETYPE_JPEG ? $jpg . '是 jpg 圖片' : $jpg . '不是 JPG 圖片', PHP_EOL;
// ../img/2.jpg是 jpg 圖片

直接使用 exif_imagetype() 函數(shù)就會(huì)返回一個(gè)圖片類型的常量,也就是以 IMAGETYPE_ 開(kāi)頭的常量信息所代表的圖片類型。它還包括其它很多類型,這里只是演示了我們平常最常見(jiàn)的 jpg 和 png 類型的圖片類型的獲取。

它和 getimagesize() 函數(shù)返回的第三個(gè)屬性,也就是下標(biāo)為 2 的那個(gè)屬性的內(nèi)容是一樣的,在 getimagesize() 函數(shù)中,0 和 1 代表的是寬高,2 代表的就是圖片的類型。

var_dump(getimagesize($jpg));
// array(7) {
//     [0]=>
//     int(300)
//     [1]=>
//     int(244)
//     [2]=>
//     int(2)
//     [3]=>
//     string(24) "width="300" height="244""
//     ["bits"]=>
//     int(8)
//     ["channels"]=>
//     int(3)
//     ["mime"]=>
//     string(10) "image/jpeg"
//   }

獲取完整的 EXIF 信息

圖片中完整的所有 EXIF 信息是通過(guò) exif_read_data() 函數(shù)來(lái)獲取的。

var_dump(exif_read_data($png));
// PHP Warning:  exif_read_data(1.png): File not supported in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP獲取圖像文件的EXIF信息.php on line 14

// Warning: exif_read_data(1.png): File not supported in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP獲取圖像文件的EXIF信息.php on line 14

// bool(false)

var_dump(exif_read_data($jpg));
// array(8) {
//     ["FileName"]=>
//     string(5) "2.jpg"
//     ["FileDateTime"]=>
//     int(1605061174)
//     ["FileSize"]=>
//     int(19075)
//     ["FileType"]=>
//     int(2)
// ……
// ……

就像前面講過(guò)的,EXIF 信息只在 JPG 、 TIFF 等類型的圖片格式中存在,所以 PNG 圖片是無(wú)法獲取到 EXIF 信息的。如果對(duì) PNG 圖片使用 exif_read_data() 就會(huì)報(bào)出警告。而對(duì)于 JPG 來(lái)說(shuō),就會(huì)返回完整的全部的 EXIF 內(nèi)容。這里我們只截取了一部分,本身的內(nèi)容非常多,不只是寬、高、類型、壓縮比率之類的,如果是手機(jī)拍攝的還能看到手機(jī)廠商、地理位置、快門(mén)參數(shù)、光圈參數(shù)等,當(dāng)然,這個(gè)也和你使用的相機(jī)有很大的關(guān)系,有的廠家可能就會(huì)少一些數(shù)據(jù)。這個(gè)大家可以自己拍張照然后使用這個(gè)函數(shù)來(lái)自己查看一下。

另外,還有一個(gè)別名函數(shù) read_exif_data() ,與 exif_read_data() 的功能是類似的,就是它的一個(gè)別名,并且在 PHP7 以后就已經(jīng)標(biāo)記為過(guò)時(shí)的語(yǔ)法了。大家可以了解一下。

var_dump(read_exif_data($jpg));
// PHP Deprecated:  Function read_exif_data() is deprecated in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP獲取圖像文件的EXIF信息.php on line 17

// Deprecated: Function read_exif_data() is deprecated in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP獲取圖像文件的EXIF信息.php on line 17
// array(8) {
//   ["FileName"]=>
//   string(5) "2.jpg"
//   ["FileDateTime"]=>
//   int(1605061174)
//   ["FileSize"]=>
// ……
// ……

獲取指定索引的頭名稱

索引頭對(duì)應(yīng)的就是 EXIF 中的字段名稱,我們可以查看當(dāng)前所有支持的索引頭信息,內(nèi)容非常多。也可以根據(jù)索引頭獲得屬性名稱,然后再到 EXIF 中查找對(duì)應(yīng)的屬性信息。

echo "256: " . exif_tagname(256) . PHP_EOL;
// 256: ImageWidth
for ($id = 1; $id <= 65535; $id++) {
    if (exif_tagname($id) != "") {
        echo $id . ' ( ' . exif_tagname($id) . ' )', PHP_EOL;
    }
}
// 11 ( ACDComment )
// 254 ( NewSubFile )
// 255 ( SubFile )
// 256 ( ImageWidth )
// 257 ( ImageLength )
// 258 ( BitsPerSample )
// 259 ( Compression )
// ……
// ……
// ……

讀取 JPG 文件中嵌入的縮略圖

可能很多人不知道吧,EXIF 中是可以保存一個(gè)縮略圖的。而且大家的手機(jī)拍出來(lái)的相片基本都會(huì)有這個(gè)縮略圖存在。Windows 系統(tǒng)中如果圖片有縮略圖的話也會(huì)直接用 EXIF 中的縮略圖,如果沒(méi)有的話,就會(huì)自動(dòng)在目錄中生成一個(gè) Thumbs.db 文件,也就是一個(gè)縮略圖的數(shù)據(jù)庫(kù)。

var_dump(exif_thumbnail('../img/3.jpeg'));

file_put_contents('../img/3-thumbnail.jpeg', exif_thumbnail('../img/3.jpeg'));

在 PHP 中可以通過(guò) exif_thumbnail() 這個(gè)函數(shù)直接獲取 JPG 文件中 EXIF 里面保存的縮略圖信息。在測(cè)試代碼中我們獲取到后再將它保存為正式的圖片,大家就可以看到縮略圖的真實(shí)樣子了。并且我們使用 exif_read_data() 來(lái)讀取這個(gè)文件的話,也能看到縮略圖保存的信息。

var_dump(exif_read_data('../img/3.jpeg'));
// array(56) {
// ……
// ……
// ……
//     ["Make"]=>
//     string(6) "Xiaomi"
//     ["THUMBNAIL"]=>
//     array(9) {
//       ["JPEGInterchangeFormat"]=>
//       int(5504)
//       ["Orientation"]=>
//       int(6)
//       ["JPEGInterchangeFormatLength"]=>
//       int(14369)
//       ["Compression"]=>
//       int(6)
//       ["ResolutionUnit"]=>
//       int(2)
//       ["XResolution"]=>
//       string(4) "72/1"
//       ["YResolution"]=>
//       string(4) "72/1"
//       ["ExifImageLength"]=>
//       int(240)
//       ["ExifImageWidth"]=>
//       int(320)
//     }
//     ["UndefinedTag:0x9AAA"]=>
//     string(4480) "1y?L?=w%?s_?&??v??oJ??$Gdz|d?9n?
// ……
// ……

感謝各位的閱讀,以上就是“利用PHP讀取到圖片的EXIF信息的方法是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)利用PHP讀取到圖片的EXIF信息的方法是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

分享標(biāo)題:利用PHP讀取到圖片的EXIF信息的方法是什么
網(wǎng)站地址:http://m.newbst.com/article12/iicddc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)靜態(tài)網(wǎng)站企業(yè)網(wǎng)站制作云服務(wù)器商城網(wǎng)站響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司