我有一个PHP应用程序......
除非图像是PNG-8,否则一切正常。所以,我不知道这是否可行,但我可以将PNG-8转换为PNG-24(或其他类型的PNG)吗?
我对PNG类型了解不多,但根据http://www.fileformat.info,工作图像的元数据看起来像这样......
<javax_imageio_png_1.0>
<IHDR width="600" height="764" bitDepth="8" colorType="RGB" compressionMethod="deflate" filterMethod="adaptive" interlaceMethod="none"/>
<pHYs pixelsPerUnitXAxis="7874" pixelsPerUnitYAxis="7874" unitSpecifier="meter"/>
<tIME year="2013" month="4" day="25" hour="14" minute="9" second="17"/>
</javax_imageio_png_1.0>
来自失败图像的元数据看起来像这样......
<javax_imageio_png_1.0>
<IHDR width="600" height="755" bitDepth="8" colorType="Grayscale" compressionMethod="deflate" filterMethod="adaptive" interlaceMethod="none"/>
<pHYs pixelsPerUnitXAxis="7874" pixelsPerUnitYAxis="7874" unitSpecifier="meter"/>
<tIME year="2013" month="4" day="23" hour="21" minute="10" second="33"/>
</javax_imageio_png_1.0>
答案 0 :(得分:1)
PNG-8是指带有索引调色板的PNG图像。它几乎总是一个较小的文件大小,但限制为256色。 PNG-24是全彩色的。
在PHP中将调色板图像转换为全彩图像的最简单方法是:
$src = imagecreatefrompng("my-indexed-image.png");
$dst = imagecreatetruecolor($w=imagesx($src),$h=imagesy($src));
imagecopy($dst,$src,0,0,0,0,$w,$h);
imagedestroy($src);
// now do stuff with $dst