图像在PHP中调整大小

时间:2012-01-06 15:55:38

标签: php image imagemagick gd image-resizing

当我正在进行一些图像处理时,我发现PHP中的GD和Imagick没有将图像调整为像素相同的颜色,在大多数情况下,这是不需要的。 现在万一,我需要从任何尺寸的图像缩放到256 * 256

为了确保测试结果一致,我使用了256 * 256图像并将其调整为自己的大小。

我的尝试:

imagecopyresized($new, $img, 0, 0, $x, 0, $width, $height, $w, $h); //256 , 256

$compression_type = imagick::COMPRESSION_NO;
$images_ima = new Imagick($image_path);    //$image_path = path to image...
$images_ima->setImageCompression($compression_type); 
$images_ima->setImageCompressionQuality(100); 
$images_ima->sampleImage($X_SIZE,$Y_SIZE); // 256 ,256
$images_ima->writeImages($dest_path, true); //destination path

没有一个工作,如果我将输出与原始图像进行比较,它将看起来像这样: Araxis merge comparison on original VS resized

看起来我使用的功能是重新采样图像,因为两个图像之间RGB值的变化很小

我可以在photoshop,OSX预览甚至Pixelformer中实现从256 * 256到256 * 256的像素到像素相同的大小调整。 我想知道如何用PHP做到这一点?

1 个答案:

答案 0 :(得分:1)

由于您的图像格式(jpeg - 假定为100质量设置)是一种有损格式,因此当您重新压缩图像时,不会以这种方式获得无损吞吐​​量。

如果尺寸已经正确,您应该尝试检测图像尺寸并使用原始图像。

如果在Photoshop或OSX预览中未更改尺寸(原始尺寸=调整尺寸后的尺寸),则不会重新压缩图像,这就是您不会看到任何更改的原因。