linux查看照片命令,php 及 linux 命令行方式读取 图片 exif 信息
【摘要】Exif就是在JPEG格式頭部插入了數碼照片的信息,包括拍攝時的光圈、快門、白平衡、ISO、焦距、日期時間等各種和拍攝條件以及相機品牌、型號、色彩編碼、拍攝時錄制的聲音以及全球定位系統(GPS)、縮略圖等。簡單地說,Exif=JPEG+拍攝參數。因此,你可以利用任何可以查看JPEG文件的看圖軟件瀏覽Exif格式的照片,但并不是所有的圖形程序都能處理Exif信息。
確保php在編譯的時候已經開啟了exif,如:–enable-exif
查看php是否已經支持exif模塊,可以通過phpinfo()查看,也可以通過命令行方式:
php -i | grep -i exif
exif
EXIF Support => enabled
EXIF Version => 1.4 $Id$
Supported EXIF Version => 0220
exif.decode_jis_intel => JIS => JIS
exif.decode_jis_motorola => JIS => JIS
exif.decode_unicode_intel => UCS-2LE => UCS-2LE
exif.decode_unicode_motorola => UCS-2BE => UCS-2BE
exif.encode_jis => no value => no value
exif.encode_unicode => ISO-8859-15 => ISO-8859-15
1
2
3
4
5
6
7
8
9
10
11
php-i|grep-iexif
exif
EXIFSupport=>enabled
EXIFVersion=>1.4$Id$
SupportedEXIFVersion=>0220
exif.decode_jis_intel=>JIS=>JIS
exif.decode_jis_motorola=>JIS=>JIS
exif.decode_unicode_intel=>UCS-2LE=>UCS-2LE
exif.decode_unicode_motorola=>UCS-2BE=>UCS-2BE
exif.encode_jis=>novalue=>novalue
exif.encode_unicode=>ISO-8859-15=>ISO-8859-15
下面是一個php讀取exif的函數
php_exif_test.php
header("Content-Type: text/html; charset=utf-8");
function getExif($img){
#$exif = exif_read_data($img, 'IFD0');
$exif = exif_read_data($img);
return array (
'文件名' => $exif['FileName'],
'文件類型' => $exif['FileType'],
'器材品牌' => $exif['Make'],
'器材' => $exif['Model'],
'快門' => $exif['ExposureTime'],
'光圈' => $exif['FNumber'],
'焦距' => $exif['FocalLength'],
'感光度' => $exif['ISOSpeedRatings'],
'文件格式' => $exif['MimeType'],
'時間戳' => $exif['DateTime'],
'圖片說明' => $exif['ImageDescription'],
'方向1' => $exif['Orientation'],
'方向2' => $Orientation[$exif['Orientation']],
'水平分辨率' => $exif['XResolution'].$exif['ResolutionUnit'],
'垂直分辨率' => $exif['YResolution'].$exif['ResolutionUnit'],
'作者' => $exif['Artist'],
# 'YCbCr位置控制' => $YCbCrPositioning[$exif['YCbCrPositioning']],
# 'YCbCr位置控制' => $exif['YCbCrPositioning'],
'版權' => $exif['Copyright'],
'Exif版本' => $exif['ExifVersion'],
'拍攝分辨率高' => $exif['COMPUTED']['Height'],
'拍攝分辨率寬' => $exif['COMPUTED']['Width'],
'拍攝時間' => $exif['DateTimeOriginal'],
);
}
$exif = getExif('pic1.jpg');
echo '
';print_r($exif);
echo '
';?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
php_exif_test.php
header("Content-Type: text/html; charset=utf-8");
functiongetExif($img){
#$exif = exif_read_data($img, 'IFD0');
$exif=exif_read_data($img);
returnarray(
'文件名'=>$exif['FileName'],
'文件類型'=>$exif['FileType'],
'器材品牌'=>$exif['Make'],
'器材'=>$exif['Model'],
'快門'=>$exif['ExposureTime'],
'光圈'=>$exif['FNumber'],
'焦距'=>$exif['FocalLength'],
'感光度'=>$exif['ISOSpeedRatings'],
'文件格式'=>$exif['MimeType'],
'時間戳'=>$exif['DateTime'],
'圖片說明'=>$exif['ImageDescription'],
'方向1'=>$exif['Orientation'],
'方向2'=>$Orientation[$exif['Orientation']],
'水平分辨率'=>$exif['XResolution'].$exif['ResolutionUnit'],
'垂直分辨率'=>$exif['YResolution'].$exif['ResolutionUnit'],
'作者'=>$exif['Artist'],
#????????'YCbCr位置控制' => $YCbCrPositioning[$exif['YCbCrPositioning']],
#????????'YCbCr位置控制' => $exif['YCbCrPositioning'],
'版權'=>$exif['Copyright'],
'Exif版本'=>$exif['ExifVersion'],
'拍攝分辨率高'=>$exif['COMPUTED']['Height'],
'拍攝分辨率寬'=>$exif['COMPUTED']['Width'],
'拍攝時間'=>$exif['DateTimeOriginal'],
);
}
$exif=getExif('pic1.jpg');
echo'
';print_r($exif);
echo'
';?>
執行結果如下:
圖片一:
(
[文件名] => pic1.jpg
[文件類型] => 2
[器材品牌] => Canon
[器材] => Canon EOS 5D Mark II
[快門] => 1/25
[光圈] => 14/10
[焦距] => 35/1
[感光度] => 2000
[文件格式] => image/jpeg
[時間戳] => 2013-07-24T13:43:47+08:00
[圖片說明] =>
[方向1] =>
[方向2] =>
[水平分辨率] => 350/12
[垂直分辨率] => 350/12
[作者] => Photographer: Fisher
[版權] => Copyright:clycsz3
[Exif版本] => 0220
[拍攝分辨率高] => 500
[拍攝分辨率寬] => 750
[拍攝時間] => 2013:07:04 01:12:22
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(
[文件名] => pic1.jpg
[文件類型] => 2
[器材品牌] => Canon
[器材] => Canon EOS 5D Mark II
[快門] => 1/25
[光圈] => 14/10
[焦距] => 35/1
[感光度] => 2000
[文件格式] => image/jpeg
[時間戳] => 2013-07-24T13:43:47+08:00
[圖片說明] =>
[方向1] =>
[方向2] =>
[水平分辨率] => 350/12
[垂直分辨率] => 350/12
[作者] => Photographer: Fisher
[版權] => Copyright:clycsz3
[Exif版本] => 0220
[拍攝分辨率高] => 500
[拍攝分辨率寬] => 750
[拍攝時間] => 2013:07:04 01:12:22
)
圖片二
(
[文件名] => pic2.jpg
[文件類型] => 2
[器材品牌] => Exif
[器材] => II*
[快門] => 1111490560/15
[光圈] => 1111490560/15
[焦距] => 1111490560/15
[感光度] => 100
[文件格式] => image/jpeg
[時間戳] =>
[圖片說明] =>
[方向1] => 1
[方向2] =>
[水平分辨率] => 16795209/12079598092
[垂直分辨率] => 18432/691327992
[作者] =>
[版權] =>
[Exif版本] => 0230
[拍攝分辨率高] => 915
[拍攝分辨率寬] => 1400
[拍攝時間] =>
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(
[文件名] => pic2.jpg
[文件類型] => 2
[器材品牌] => Exif
[器材] => II*
[快門] => 1111490560/15
[光圈] => 1111490560/15
[焦距] => 1111490560/15
[感光度] => 100
[文件格式] => image/jpeg
[時間戳] =>
[圖片說明] =>
[方向1] => 1
[方向2] =>
[水平分辨率] => 16795209/12079598092
[垂直分辨率] => 18432/691327992
[作者] =>
[版權] =>
[Exif版本] => 0230
[拍攝分辨率高] => 915
[拍攝分辨率寬] => 1400
[拍攝時間] =>
)
發現第二張圖片有些參數取出來的值不對:
[器材品牌] => Exif
[器材] => II*
懷疑是幾種原因導致,一是相機設備的exif信息比較新,php的exifi模塊無法讀取;二是圖片被編輯過,部分exif信息被破壞。
下面提供linux下的一個command方式讀取exif信息的工具–ImageMagick,ubuntu和centos下都有。
如CentOS下的安裝方式: yum install ImageMagick
/usr/bin/identify -verbose pic1.jpg | grep -i exif
exif:ApertureValue: 970854/1000000
exif:Artist: Photographer:Fisher
exif:Copyright: Copyright:clycsz3
exif:DateTime: 2013-07-24T13:43:47+08:00
exif:DateTimeDigitized: 2013:07:04 01:12:22
exif:DateTimeOriginal: 2013:07:04 01:12:22
exif:ExifImageLength: 500
exif:ExifImageWidth: 750
exif:ExifOffset: 276
exif:ExifVersion: 48, 50, 50, 48
exif:ExposureBiasValue: 0/1
exif:ExposureMode: 0
exif:ExposureProgram: 3
exif:ExposureTime: 1/25
exif:Flash: 16
exif:FNumber: 14/10
exif:FocalLength: 35/1
exif:FocalPlaneResolutionUnit: 2
exif:FocalPlaneXResolution: 3861000/1459
exif:FocalPlaneYResolution: 2574000/958
exif:ISOSpeedRatings: 2000
exif:Make: Canon
exif:MaxApertureValue: 1/1
exif:MeteringMode: 5
exif:Model: Canon EOS 5D Mark II
exif:ResolutionUnit: 2
exif:SceneCaptureType: 0
exif:ShutterSpeedValue: 4643856/1000000
exif:Software: Adobe Photoshop CS6 Windows
exif:SubSecTime: 08
exif:SubSecTimeDigitized: 08
exif:SubSecTimeOriginal: 08
exif:WhiteBalance: 0
exif:XResolution: 350/1
exif:YResolution: 350/1
Profile-exif: 708 bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/usr/bin/identify-verbosepic1.jpg|grep-iexif
exif:ApertureValue:970854/1000000
exif:Artist:Photographer:Fisher
exif:Copyright:Copyright:clycsz3
exif:DateTime:2013-07-24T13:43:47+08:00
exif:DateTimeDigitized:2013:07:0401:12:22
exif:DateTimeOriginal:2013:07:0401:12:22
exif:ExifImageLength:500
exif:ExifImageWidth:750
exif:ExifOffset:276
exif:ExifVersion:48,50,50,48
exif:ExposureBiasValue:0/1
exif:ExposureMode:0
exif:ExposureProgram:3
exif:ExposureTime:1/25
exif:Flash:16
exif:FNumber:14/10
exif:FocalLength:35/1
exif:FocalPlaneResolutionUnit:2
exif:FocalPlaneXResolution:3861000/1459
exif:FocalPlaneYResolution:2574000/958
exif:ISOSpeedRatings:2000
exif:Make:Canon
exif:MaxApertureValue:1/1
exif:MeteringMode:5
exif:Model:CanonEOS5DMarkII
exif:ResolutionUnit:2
exif:SceneCaptureType:0
exif:ShutterSpeedValue:4643856/1000000
exif:Software:AdobePhotoshopCS6Windows
exif:SubSecTime:08
exif:SubSecTimeDigitized:08
exif:SubSecTimeOriginal:08
exif:WhiteBalance:0
exif:XResolution:350/1
exif:YResolution:350/1
Profile-exif:708bytes
看上去還是比較好用的,看看程序上怎么方便處理和調用吧。
也可以跟http://exif.cn/對比一下,看看你取出來的exif信息是否正確。
總結
以上是生活随笔為你收集整理的linux查看照片命令,php 及 linux 命令行方式读取 图片 exif 信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于HTML预处理器Pug的使用文档
- 下一篇: 干货 :送你一份使用k近邻算法实现回归的