如何调整图像大小

时间:2011-08-30 12:42:52

标签: php imagemagick gd

如何在Linux中减少图像大小。我已经使用了ImageMagick。但它对gif图像效果不佳。我用它作为:

调整图片大小

exec("convert $original -resize " . $width . 'x' . $height . ' ' . $destination);

缩小图像尺寸

exec("convert $original -quality 80% $new_img");

如果您有办法缩小图像尺寸,请与我们联系。此代码适用于jpg,但不适用于gif图像。

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

引自the Imagemagick manual:

-quality value 
JPEG/MIFF/PNG compression level.

这意味着使用质量级别仅适用于上述图像类型,不包括GIF。

对于GIF,最简单的选择是使用-colors命令减少图像中使用的颜色数量。结果的质量在很大程度上取决于您的初始图像包含的内容,我已经看到从256到16种颜色减少不会导致显着质量损失的情况,以及其他减少到128种颜色使图像无法使用的情况。你必须进行实验。

最后一条话:您可以将GIF转换为PNG格式,并在生成的图像上使用-quality命令。然而,PNG的质量有点用词不当:

  

对于MNG和PNG图像格式,质量值设置zlib压缩   等级(质量/ 10)和过滤器类型(质量%10)。默认的PNG“质量”   是75,这意味着压缩级别7具有自适应PNG过滤,除非   图像有一个颜色图,在这种情况下,它表示没有PNG的压缩级别7   过滤

因此,如果PNG上的尺寸缩小比JPG'小,那就不要感到惊讶,它只会改善无损PNG图像的压缩。

答案 1 :(得分:0)

要缩小GIF图像的大小,您可以尝试将它们转换为PNG或减少颜色深度。颜色深度是图像中使用的颜色数。颜色越少意味着图像尺寸越小。

答案 2 :(得分:0)

所以你可以使用GD http://ua.php.net/manual/en/function.imagecopyresampled.php <

?php
// The file
$filename = 'test.jpg';

// Set a maximum height and width
$width = 200;
$height = 200;

// Content type
header('Content-Type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, null, 100);
?>

答案 3 :(得分:0)

以下适用于JPEG图像,可能适用于其他图像格式。给定的密​​度(300)非常高,适合保持文本可读,因此请根据您的情况进行调整。

convert input-file -density 300 -quality 50% output-file