问题几乎说明了一切。
这个想法是生成程序PNG。我知道 imageMagick 的 '-fx' 运算符,但它很慢。
一种解决方法可能是将我的数组保存到 .bmp (这几乎只是保存它),然后使用 ImageMagick 将 .bmp 转换为 .png 但最好有更直接的方法。
问题几乎说明了一切。
这个想法是生成程序PNG。我知道 imageMagick 的 '-fx' 运算符,但它很慢。
一种解决方法可能是将我的数组保存到 .bmp (这几乎只是保存它),然后使用 ImageMagick 将 .bmp 转换为 .png 但最好有更直接的方法。
为此,您可以利用 ImageMagick 的 TXT 图像格式。我无法告诉您有关性能的任何信息,您必须对其进行测试。
首先尝试以下方法:
convert some-small.png some-small-png.txt
convert some-small.jpg some-small-jpg.txt
convert some-small.tif some-small-tif.txt
[...]
(这种转换也可能很慢。)
然后进行反向转换:
convert some-small-png.txt some-small-roundtripped.png
convert some-small-png.txt some-small-roundtripped.jpg
convert some-small-png.txt some-small-roundtripped.tif
[...]
(这种转换应该更快。)
将初始 PNG、JPEG、TIFF 与往返的比较。
查看 *.txt 文件以了解其格式:
#(描述相应颜色的十六进制值)之后的所有内容都不是必需的——您可以将其视为注释。此外,每行上所有剩余的空白都是可选的。这意味着您可以重新组织您的 RGBA 数组,使其与 ImageMagick 的 TXT 图像格式匹配(正如我所说,您既不需要十六进制值也不需要友好的颜色名称),然后只需调用convert(在添加所需的标题行)。
我给你举个例子。
这是极其简单的,去掉了空格、名称和颜色的#hex 值,2x2 像素 sRGBA 迷你图像由2x2.txt. 它的文件大小为 129 字节。
猫 2x2.txt # ImageMagick 像素枚举:2,2,65535,srgba 0,0:(65535,0,0,65535) 0,1:(0,65535,0,65535) 1,0:(0,0,65535,65535) 1,1:(0,0,0,0)
您将其转换为 PNG 图像:
convert 2x2.txt 2x2.png
2x2.png是 293 字节。由于 2x2 像素的 PNG 太小而无法在网站上识别,我们可以转换为更大的图像:
convert 2x2.txt -scale 10000% 200x200.png
convert 2x2.txt -scale 1000% 20x20.png
这 2 个 PNG 在网页上是可识别的:

为了演示完整的格式(不去掉空格、名称或颜色的#hex 值),让我们创建相应的 20x20.txt 并查看它:
转换 20x20.png 20x20.txt
猫 20x20.txt
# ImageMagick 像素枚举:20,20,255,srgba
0,0: (255, 0, 0,255) #FF0000 红色
1,0: (255, 0, 0,255) #FF0000 红色
2,0: (255, 0, 0,255) #FF0000 红色
3,0: (255, 0, 0,255) #FF0000 红色
4,0: (255, 0, 0,255) #FF0000 红色
5,0: (255, 0, 0,255) #FF0000 红色
6,0: (255, 0, 0,255) #FF0000 红色
7,0: (255, 0, 0,255) #FF0000 红色
8,0: (255, 0, 0,255) #FF0000 红色
9,0: (255, 0, 0,255) #FF0000 红色
10,0: ( 0, 0,255,255) #0000FF 蓝色
11,0: ( 0, 0,255,255) #0000FF 蓝色
[……]
[……]
[……]
7,19: ( 0,255, 0,255) #00FF00 石灰
8,19: ( 0,255, 0,255) #00FF00 石灰
9,19: ( 0,255, 0,255) #00FF00 石灰
10,19: ( 0, 0, 0, 0) #00000000 无
11,19: ( 0, 0, 0, 0) #00000000 无
12,19: ( 0, 0, 0, 0) #00000000 无
13,19: ( 0, 0, 0, 0) #00000000 无
14,19: ( 0, 0, 0, 0) #00000000 无
15,19: ( 0, 0, 0, 0) #00000000 无
16,19: ( 0, 0, 0, 0) #00000000 无
17,19: ( 0, 0, 0, 0) #00000000 无
18,19: ( 0, 0, 0, 0) #00000000 无
19,19: ( 0, 0, 0, 0) #00000000 无