问题几乎说明了一切。
这个想法是生成程序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 无