質問はほとんどそれをすべて言います。
アイデアは、手続き型 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 ファイルを見て、その形式を理解してください。
#(それぞれの色の 16 進値を表す) の後のすべては必須ではないことに注意してください。これはコメントと見なすことができます。また、各行の残りのブランクはすべてオプションです。これは、ImageMagick の TXT 画像形式に一致するように RGBA 配列を再編成し (前述したように、16 進値もわかりやすい色名も必要ない)、単純に呼び出すことができることを意味します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 は Web サイトで認識するには小さすぎるため、より大きなものに変換できます。
convert 2x2.txt -scale 10000% 200x200.png
convert 2x2.txt -scale 1000% 20x20.png
次の 2 つの PNG は、Web ページで認識できます。

完全な形式 (空白、名前、または色の #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 なし