用PHP压缩GIF图像质量?

时间:2010-09-14 12:43:47

标签: php image gif

如何在PHP5中压缩GIF图像文件?

我知道可以像JPG一样使用JPG($ resource,$ filename,$ quality) 根据{{​​3}}

3 个答案:

答案 0 :(得分:6)

JPG是一种有损压缩。这意味着您可以使用“质量参数”来调整尺寸/质量比。

GIF是无损压缩,通过调整质量无法获得更好的压缩效果。

要创建GIF图像,请使用imagegif(...)
http://us.php.net/manual/en/function.imagegif.php

答案 1 :(得分:6)

Gif肯定是有损的,你绝对可以压缩它们 - 非常显着。这是PHP代码:

$img = imagecreatefromstring(file_get_contents($_FILES["my_field"]["tmp_name"]));
imagetruecolortopalette($img, false, 16);  //  compress to 16 colors in gif palette (change 16 to anything between 1-256)
imagegif($img, $destination_filename);  //  $destination_filename is the location on your server where you want to save the compressed gif file

感谢Mario,来自上面第一行的这个链接:Convert JPG/GIF image to PNG in PHP?

许多人声称GIF是无损的,这是不正确的。 Gifs肯定会丢失数据。损失发生在保存点,而不是文件打开点,并且gif丢失表现出不同的jpegs丢失,这是人们感到困惑的地方。一点点理由也会告诉我,几乎每个不是位图的图像类型确实都是有损的,否则我们也可以只使用位图。除了这种基本的理解之外,图像压缩并不是所有这些专家“博客”推广的精确科学,程序员将很好地深入研究数据格式和压缩算法(双关语),并且可以自己研究。

本文http://searchcio-midmarket.techtarget.com/definition/lossless-and-lossy-compression断然且错误地声明“图形交换文件(GIF)是Web上使用的提供无损压缩的图像格式。”这就像说“所有矩形都是正方形”。有些矩形肯定是正方形,然而,根据逻辑,该陈述是100%错误。如果你有一个黑白图像,你当然可以使用无损GIF图像,但GIF并不是“无损”。此外,以100%质量保存jpeg文件也是无损的,但可以创建比原始文件更大的文件。

作为一个非常简单的规则:对于高速传输,使用带有小调色板的GIF用于高对比度图像(如白色桌子上的黑色笔记本图像);在非常低对比度的图像(如森林图像)上使用50%-70%之间的jpegs;并在中等对比度或混合对比度图像(如你和你朋友的图像)上使用带有63%-85%质量的大调色板或jpeg的GIF。

LZW压缩(对于Tiff文件)是惊人的,但请记住,有可能压缩图像并最终得到一个翻译字典,除了压缩数据本身,它还比原始图像大。图像压缩非常复杂,没有任何尺寸适合所有,因此在讨论图像压缩时避免一揽子陈述。没有“正确”的选择,只有更好的选择。

答案 2 :(得分:0)

如果你想打开一个GIF图像,请查看函数imagecreatefromgif: http://www.php.net/manual/en/function.imagecreatefromgif.php

结果可以传递给imagejpeg以保存为JPEG。根据图像,这可能毫无意义。