PHP GD与ImageCreateTrueColor和PNGs有关

时间:2010-04-15 18:20:10

标签: php png transparency gd alpha

我正在使用GD图像库函数ImageCopyResampled()调整PNG图像的大小。一切正常,我甚至可以使用ImageCreateTrueColor()保持alpha混合透明度,而不是使用ImageCreate()来创建调整大小的图像。

问题是,如果我使用ImageCreateTrueColor()而不是ImageCreate(),PNG文件的文件大小会从80kb增加到150kb。如果我使用ImageCreate()文件大小保持相同的大小,但颜色螺丝!

所以我的问题是,在不增加文件大小的情况下,如何在调整PNG图像大小时保留Alpha混合?

哦,我正在缩小PNG的尺寸。

1 个答案:

答案 0 :(得分:1)

使用imagecreate()您正在创建索引颜色的PNG文件,并使用imagecreatetruecolor()创建一个24位彩色PNG文件。当然,对于真彩色图像,重采样质量会显得更好,因为它在重采样时具有更大范围的颜色。使用imagecreate(),系统只能使用更小的调色板。

您可以使用Photoshop或Gimp进行尝试,以不同的颜色模式(索引和RGB)缩放图像。不幸的是,这是游戏的本质 - 当存储更多颜色时,文件大小会更大。

我不确定它是否会有所作为,但您可以尝试使用imagecopyresampled()复制到真彩色资源(来自imagecreatetruecolor()),然后复制(但不能重新取样)< em>那到调色板图像资源。这样,基于重采样结果确定调色板。不过,我不确定你是否能够保留alpha通道。