php读取、擦除JPEG格式的图片里敏感的Exif信息
php安装exif插件
php如果想要读取exif信息,那么需要安装Exif插件。
首先phpinfo()打印以下,看看exif插件是否已经安装,有的php安装的时候默认安装,有的精简了就没有安装。
如果没有安装,那么可以按照以下步骤安装:
- 打开php的源码包,进入
php源码包路径/ext/exif
。关于exif的源码就在此处 - 执行命令
/usr/local/php/bin/phpize
。(具体路径根据你自己的php安装路径来确定) ./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
- 去
php.ini
里面开启插件extension=exif.so
php读取exif信息
安装完exif插件之后,就可以调用相关api读取图片信息了
$exifinfo = exif_read_data($picPath);
注意:exif_read_data
里面的参数,不能是一个网上的图片url
php里面可调用的exif函数很少,比如官网上只列举了几个:
exif_imagetype
— 判断一个图像的类型exif_read_data
— 从 JPEG 或 TIFF 文件中读取 EXIF 头信息exif_tagname
— 获取指定索引的头名称exif_thumbnail
— 取得嵌入在 TIFF 或 JPEG 图像中的缩略图read_exif_data
— 别名 exif_read_data
如果想要擦除图片里面的exif信息,那么需要用别的办法。
php擦除exif信息
在github上找到一个别人的库lsolesen/pel
,它可以擦除exif信息。
不过它的demo都是命令行形式的,好在源码都在,拿来改一改可以放到自己的代码里。我把代码放到了线上,这是我的测试地址。
不过使用lsolesen/pel
擦除exif的时候,有个很trick的问题:
- 使用
lsolesen/pel
这个库自己查看擦除后的信息,确实是被擦除了 - 我拿别人的在线去除exif的工具试了一下,也是被擦除了
- 但在Mac里面用
Preview->showInspector
看的时候,时间信息DateTimeOriginal
、DateTimeDigitized
还是能看到╭(╯^╰)╮