php 及 linux 命令行方式读取 图片 exif 信息
kevin.Zhu 发布于:2013-4-25 0:25 分类:Linux 有 16 人浏览,获得评论 0 条
【摘要】Exif就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及全球定位系统(GPS)、缩略图等。简单地说,Exif=JPEG+拍摄参数。因此,你可以利用任何可以查看JPEG文件的看图软件浏览Exif格式的照片,但并不是所有的图形程序都能处理Exif信息。
确保php在编译的时候已经开启了exif,如:–enable-exif
查看php是否已经支持exif模块,可以通过phpinfo()查看,也可以通过命令行方式:
1
2
3
4
5
6
7
8
9
10
11
|
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
|
下面是一个php读取exif的函数
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
<?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 '<pre>';
print_r($exif);
echo '</pre>';
?>
|
执行结果如下:
图片一:
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
)
|
图片二
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
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 -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
|
看上去还是比较好用的,看看程序上怎么方便处理和调用吧。
也可以跟http://exif.cn/对比一下,看看你取出来的exif信息是否正确。
-
存档
- 2024年2月(1)
- 2024年1月(15)
- 2023年12月(2)
- 2023年11月(7)
- 2023年10月(5)
- 2023年8月(1)
- 2023年6月(3)
- 2023年5月(1)
- 2023年4月(4)
- 2023年3月(14)
- 2023年2月(8)
- 2023年1月(10)
- 2022年12月(21)
- 2022年11月(24)
- 2022年10月(16)
- 2022年9月(16)
- 2022年8月(31)
- 2022年7月(25)
- 2022年6月(10)
- 2022年5月(20)
- 2022年4月(32)
- 2022年3月(16)
- 2022年2月(9)
- 2022年1月(13)
- 2021年12月(7)
- 2021年11月(16)
- 2021年10月(8)
- 2021年9月(12)
- 2021年8月(12)
- 2021年7月(21)
- 2021年6月(13)
- 2021年5月(20)
- 2021年4月(19)
- 2021年3月(9)
- 2021年2月(3)
- 2021年1月(10)
- 2020年12月(16)
- 2020年11月(13)
- 2020年10月(2)
- 2020年9月(17)
- 2020年8月(4)
- 2020年7月(15)
- 2020年6月(5)
- 2020年5月(1)
- 2020年4月(21)
- 2020年3月(44)
- 2020年2月(20)
- 2020年1月(12)
- 2019年12月(9)
- 2019年11月(13)
- 2019年10月(44)
- 2019年9月(18)
- 2019年8月(15)
- 2019年7月(6)
- 2019年6月(17)
- 2019年5月(10)
- 2019年4月(24)
- 2019年3月(6)
- 2019年2月(2)
- 2019年1月(9)
- 2018年12月(16)
- 2018年11月(6)
- 2018年10月(10)
- 2018年9月(7)
- 2018年8月(8)
- 2018年7月(13)
- 2018年6月(20)
- 2018年5月(22)
- 2018年4月(25)
- 2018年3月(34)
- 2018年2月(9)
- 2018年1月(29)
- 2017年12月(13)
- 2017年11月(29)
- 2017年10月(19)
- 2017年9月(24)
- 2017年8月(27)
- 2017年7月(21)
- 2017年6月(35)
- 2017年5月(61)
- 2017年4月(17)
- 2017年3月(5)
- 2016年8月(1)
- 2014年3月(12)
- 2014年2月(25)
- 2014年1月(22)
- 2013年12月(29)
- 2013年11月(19)
- 2013年10月(18)
- 2013年9月(23)
- 2013年8月(24)
- 2013年7月(22)
- 2013年6月(15)
- 2013年5月(11)
- 2013年4月(36)
- 2013年3月(28)
- 2013年2月(35)
- 2013年1月(627)
-
最新文章
- docker 容器镜像日志满了,解决方案
- sshd_config 中文手册:关于ssh 设置的相关总结(ssh最大连接数、ssh连接时长、安全性配置等)
- 如何在 Linux 中使用 SSH ProxyJump 和 SSH ProxyCommand
- ubuntu - apt-get更新非交互式
- /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found
- Golang中,Aes加解密
- Go实现MD5加密的三种方法小结
- go语言 跟 php nodejs通用的加解密代码
- Win10/11 更改 WSL Docker Desktop 存储路径
- go语言使用vscodedebug 输入数据怎么调试
- ubuntu18.04安装Go语言
- 一键生成ssl证书脚本
- 一键生成自签名SSL秘钥证书
- nginx根据不同的域名将反向代理的tcp连接分流到不同的后端服务器上
- WSL2支持systemctl命令
- WSL 双系统端口映射,网络穿透最新教程
- 使用apt-mirror搭建debian本地仓库 apt源 debian源
- vscode设置打开多个标签页
- 使用IPTABLES实现对特定IP,端口流量的精确统计
- 开源免费的知识库文档管理系统(合集+排名)
- Windows 10(21H2)+ LTSC 2021 最新版MSDN官方简体中文原版ISO镜像下载地址
- Typora语法学习-自我总结笔记
- win7原版下载地址
- 解决在 Win7 旗舰版虚拟机中安装 VMware Tools 失败问题
- windows安装QT
- 使用pkg打包zx编写的nodejs程序
- nodejs库-inquirer.js
- 在nodejs代码中使用 import 替代require
- konva教程
- konva中文文档
-
热门文章