2010-04-15 103 views
1

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

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

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

哦,我正在减少PNG的尺寸。

回答

1

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

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

我不知道它是否会有所作为,但你可以尝试使用imagecopyresampled()复制到真彩色资源(从imagecreatetruecolor()),然后复制(但不重新取样)为调色板图像资源。这样调色板就是根据重采样结果确定的。不过,我不确定你能保留alpha通道。