有没有办法使用 PHP 将 16 位(灰度)彩色 PNG 转换为 RGBA4444 颜色格式?
-或者-
有没有办法使用 RGBA4444 格式加载这个 16 位灰度 PNG?
PNG 标头表示它使用 16 位颜色(位深度)和灰度颜色(颜色类型)(http://www.fileformat.info/format/png/corion.htm,IHDR 图像标头)。
$rgb = imagecolorat($src, $x, $y);
var_dump("RGB - ".dechex($rgb));
$rgba = imagecolorsforindex($src, $rgb);
var_dump("RGBA - ".dechex($rgba));
$rgb
(例如)的值是A7
while $rgba
is [A7, A7, A7, 0]
。
顺便说一句,这是所述文件的标题:
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 | .PNG........IHDR
00 00 03 FF 00 00 03 FF 10 00 00 00 00 E3 F9 FF | ................
C9 00 00 00 0D 74 45 58 74 44 46 4D 54 00 52 34 | .....tEXtDFMT.R4
47 34 42 34 41 34 E0 94 BA 92 00 00 20 00 49 44 | G4B4A4........ID
41 54 .. .. | AT
编辑:
我首先做的是遵循查理的这段代码(https://stackoverflow.com/a/7293429/2205703)。(当然有一些修改。)然后将每个 16 位颜色格式(基于tEXt
块)转换为 RGBA8888 格式。
然后,pack()
将它们转换为 PNG 文件格式。但我仍然遇到图像错误。