ImageCreateTrueColor和PNG的PHP GD问题

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

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

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

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

解决方法:

使用imagecreate()创建索引颜色PNG文件,使用imagecreatetruecolor()创建24位颜色PNG文件.当然,在真彩色图像上,重采样质量会好得多,因为重采样时使​​用的颜色范围更大.使用imagecreate()时,系统只能使用小得多的调色板.

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

我不确定是否会有所作为,但是您可以尝试使用imagecopyresampled()复制到真彩色资源(来自imagecreatetruecolor()),然后将其复制(但不重新采样)到调色板图像资源.这样,根据重新采样的结果确定调色板.不过,我不确定您是否可以保留Alpha通道.

上一篇:PHP GD-透明PNG黑色背景


下一篇:PHP的图像箭头线需要光滑