我有一个
PHP照片共享应用程序,用户上传的图像使用ImageMagick调整为各种缩略图格式.
作为一个看似“聪明”的方式来保存文件大小,我从这些大拇指剥离exif信息如下:
$imagick = new Imagick($image);
$imagick->stripImage();
$imagick->writeImage($image);
这个工作.它会删除EXIF信息,其中30KB的缩略图保存为12KB,成为18KB.在单个页面上显示许多这样的大拇指时,显着的节省.
然而,问题是它的工作有点太好了.与其非剥离版本相比,所得到的图像似乎失去了大量的颜色信息,并且看起来“平坦”.
根据我迄今为止的研究,我的理论是以下一个或两个是真的:
Imagick将剥离基本色彩信息作为剥离过程的一部分
> Imagick在保存时重新压缩图像,质量下降
不管问题的原因,我正在寻找一种方式来删除EXIF信息,使其不影响图像质量或颜色本身.
这是甚么可能吗?
更新:
根据Gerald Schneider的回答,我尝试在“剥离”图像之前将质量设置提升到100%:
$imagick = new Imagick($image);
$imagick->setCompression(imagick::COMPRESSION_JPEG);
$imagick->setCompressionQuality(100);
$imagick->stripImage();
$imagick->writeImage($image);
不幸的是,问题依然存在.以下是示例输出,尽管将质量设置为100%,但图像仍然平坦.