用PHP压缩GIF图像质量?

EMC*_*EMC 5 php image gif

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

根据http://us.php.net/manual/en/function.imagejpeg.php,我知道可以像这个imagejpeg($ resource,$ filename,$ quality)一样使用JPG.

qbe*_*uek 6

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

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

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


Joh*_*y B 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
Run Code Online (Sandbox Code Playgroud)

感谢Mario,从上面第一行的这个链接:在PHP中将JPG/GIF图像转换为PNG?

许多人声称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文件)是惊人的,但请记住,有可能压缩图像并最终得到一个翻译字典,除了压缩数据本身,它还比原始图像大.图像压缩非常复杂,没有任何尺寸适合所有,因此在讨论图像压缩时避免一揽子陈述.没有"正确"的选择,只有更好的选择.