質問はほとんどそれをすべて言います。
アイデアは、手続き型 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 なし