我正在编写一个将jpg转换为gif的脚本。我面临的问题是imagegif的输出质量差,有些颜色会改变。 (黑色)
以下是样本。一个在JPG,另一个在GIF。
http://oi62.tinypic.com/atx1j.jpg [JPG] http://oi62.tinypic.com/oiyscy.jpg [GIF]
正如您所看到的,GIF图像的颜色已经改变了alitle。
我正在使用以下代码
$img = imagecreatefromstring(base64_decode($image));
imagegif($img, "output.gif");
如何提高gif图像的质量?
答案 0 :(得分:0)
GIF本质上比JPEG更差,这是因为GIF只有256种颜色可供使用,而JPEG有4,294,967,296种颜色...
如果图像中的颜色少于256种,GIF的质量实际上高于JPEG,因为它不会进行任何压缩,而jpeg会压缩。
答案 1 :(得分:0)
这与PHP无关:JPEG格式是真彩色(或灰度)格式,而GIF格式是调色板格式,最大调色板大小低于真彩色。
您需要重新考虑转换过程。
答案 2 :(得分:0)
以下
<?php
// load image
$image = imagecreatefromstring(file_get_contents('http://oi62.tinypic.com/atx1j.jpg'));
// create a true color image of the same size
$image2 = imagecreatetruecolor(imagesx($image), imagesy($image));
// copy the original gif image on to the true color image
imagecopy($image2, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
// output image
header("Content-Type: image/gif");
imagegif($image2);
imagedestroy($image);
imagedestroy($image2);
?>
来源图片
PHP生成的GIF图像
正如您所看到的,它稍好一些。非常接近orignal。但是你仍然限制在GIF中的256种颜色= [