3

質問はほとんどそれをすべて言います。

アイデアは、手続き型 PNG を生成することです。imageMagick の「-fx」演算子は知っていますが、非常に遅いです。

回避策として、配列を .bmp に保存し (これはほとんど保存するだけです)、ImageMagick を使用して .bmp を .png に変換することもできますが、より直接的な方法があればよいでしょう。

4

1 に答える 1

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 ファイルを見て、その形式を理解してください。

  • これは、各ピクセルの座標とそれぞれの色の値を行ごとに列挙する正式なテキスト記述です。
  • 最初の行は、画像のサイズ、深さ、使用される色空間を説明するヘッダーです。
  • また、各行の#(それぞれの色の 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 ページで認識できます。

200x200.png   20x20.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 なし
 
于 2012-09-14T03:03:59.393 に答える