问题几乎说明了一切。
这个想法是生成程序PNG。我知道imageMagick的'-fx'操作符,但它很慢。
解决方法可能是将我的数组保存到.bmp(这几乎只是保存它)然后只使用ImageMagick将.bmp转换为.png,但是有一个更直接的方法会很好。
答案 0 :(得分:2)
您可以为此目的利用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图像格式匹配(正如我所说,您既不需要十六进制值也不需要友好的颜色名称),然后只需调用{{ 1}}(在添加所需的标题行之后)。
我会举个例子。
这是极简单的,剥离的空白,名称和#hex值的颜色,2x2像素sRGBA迷你图像由convert
表示。它的文件大小是129字节。
cat 2x2.txt # ImageMagick pixel enumeration: 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图像:
2x2.txt
convert 2x2.txt 2x2.png
是293字节。由于2x2像素PNG太小而无法在网站上识别,我们可以转换为更大的东西:
2x2.png
这两个PNG可在网页上识别:
为了演示完整的格式(没有去除空白,名称或颜色的#hex值),让我们创建相应的20x20.txt并查看它:
convert 20x20.png 20x20.txt cat 20x20.txt # ImageMagick pixel enumeration: 20,20,255,srgba 0,0: (255, 0, 0,255) #FF0000 red 1,0: (255, 0, 0,255) #FF0000 red 2,0: (255, 0, 0,255) #FF0000 red 3,0: (255, 0, 0,255) #FF0000 red 4,0: (255, 0, 0,255) #FF0000 red 5,0: (255, 0, 0,255) #FF0000 red 6,0: (255, 0, 0,255) #FF0000 red 7,0: (255, 0, 0,255) #FF0000 red 8,0: (255, 0, 0,255) #FF0000 red 9,0: (255, 0, 0,255) #FF0000 red 10,0: ( 0, 0,255,255) #0000FF blue 11,0: ( 0, 0,255,255) #0000FF blue [....] [....] [....] 7,19: ( 0,255, 0,255) #00FF00 lime 8,19: ( 0,255, 0,255) #00FF00 lime 9,19: ( 0,255, 0,255) #00FF00 lime 10,19: ( 0, 0, 0, 0) #00000000 none 11,19: ( 0, 0, 0, 0) #00000000 none 12,19: ( 0, 0, 0, 0) #00000000 none 13,19: ( 0, 0, 0, 0) #00000000 none 14,19: ( 0, 0, 0, 0) #00000000 none 15,19: ( 0, 0, 0, 0) #00000000 none 16,19: ( 0, 0, 0, 0) #00000000 none 17,19: ( 0, 0, 0, 0) #00000000 none 18,19: ( 0, 0, 0, 0) #00000000 none 19,19: ( 0, 0, 0, 0) #00000000 none