我有哪个用户上传的图像调整到使用ImageMagick各种拇指格式PHP照片分享应用。
作为一个看似“聪明”的方式来保存文件的大小,我剥从这些大拇指如下EXIF信息:
$imagick = new Imagick($image);
$imagick->stripImage();
$imagick->writeImage($image);
这工作。 它不会删除EXIF信息,其中30KB的大拇指节省了12KB和18KB变。 呈现出显著节省当许多这样的拇指在一个页面上。
但问题是,它的工作原理有点太清楚了。 所产生的图像似乎失去了很多的颜色信息,并与他们未剥离的版本看“蜗居”。
根据我的研究,到目前为止,我的理论是,以下的一个或两个是正确的:
- Imagick扔掉必要的颜色配置文件信息作为剥离过程的一部分
- Imagick在保存它重新压缩图像,失去质量
无论问题的原因,我正在寻找一种方式来消除这样一种方式,它不影响图像质量或颜色本身EXIF信息。
这甚至可能吗?
更新:
基于杰拉德施奈德的回答,我想执行的质量设置为100%之前,“剥离”的形象:
$imagick = new Imagick($image);
$imagick->setCompression(imagick::COMPRESSION_JPEG);
$imagick->setCompressionQuality(100);
$imagick->stripImage();
$imagick->writeImage($image);
不幸的是,问题依旧。 下面是示例输出,其中尽管将质量设置为100%时,图像仍平坦化。