标题说的差不多。转换会增加伪影,尽管我需要一个精确的副本,但只复制了图像本身,从而绝对剥夺了原始文件中可能存在或不存在的所有其他内容。因此,我想我需要以某种方式预渲染然后一次重新创建一个像素的图像,但是我什至没有最模糊的想法。谷歌搜索除转换和刷新之外,没有让我走得更远,因此我们将不胜感激。
答案 0 :(得分:0)
从图像中剥离所有EXIF,GPS,IPTC,作者,版权和颜色配置文件的一种方法是使用 ImageMagick ,该功能可在所有Linux发行版以及macOS和Windows上使用。
在命令行中,您可以这样做:
convert input.jpg -strip output.jpg
如果要使用PHP做到这一点,可以使用 Imagick 等效项:
bool Imagick::stripImage ( void )
,已记录在here中。这样看起来像:
// Load input image and strip everything
$image = new Imagick('start.jpg');
$image->stripImage();
// Output result
$image->writeImage('result.jpg');
另一种,也许更简单,更轻便的方法是使用exiftool
(这是“只是一个简单的” Perl 脚本,而不是庞大的程序包)像这样的 ImageMagick ):
exiftool -all= YourImage.jpg
如果发现更简单,也可以使用system()
从PHP“脱壳”以运行这些命令。
如果对此有绝对的偏执,则可以转换为完全不支持元数据的中间格式,例如NetPBM
格式(Wikipedia link),然后再返回JPEG,如下所示:
convert YourImage.jpg -strip pam:- | convert pam:- result.jpg
如果您想知道为什么我仍然使用上面的-strip
,那是因为NetPBM确实支持注释,所以我想摆脱它们。如果您想知道为什么我选择PAM格式而不是PPM,那么它可以用于可能具有4个通道(即RGB和透明)的PNG文件。
您可以使用以下方法检查图像中仍然包含哪些信息:
jhead -v YourImage.jpg
或者:
exiftool YourImage.jpg
或者,您可以在图像中找到所有类似文本的字符串,然后使用grep
查找并查看是否有您不希望看到的东西滑过:
strings YourImage.jpg | grep -Ei "copyright|latitude|longitude|author"