2017-07-14 9 views
0

imagemagickがこれを行うことができるかどうか、または自分で何かを書く必要があるかどうかは確かです。私は、各行が1つのピクセル(左から右、上から下へ読む)を表し、各行に15ビットのデータを持つようなテキストファイルに以下のようなイメージを変換したいと考えています(R 、G、およびB)。15ビットカラースペースPNG画像をテキストファイルに変換する

したがって、例えば、下のイメージは、15ビットの256x224 = 57,344行を持ちます。

imagemagickはこれを実行できますか?そうでない場合は、別のリソースがありますか?助けをお待ちしています。

enter image description here

答えて

3

ただ、「.TXT」出力フォーマットを使用します。

magick U4zI6.png U4zI6.txt 

これは、各ラインのためのより多くの膨大な情報を持っていますが、あなたは などに 『sedの』などのテキストエディタを使用することができますRGB値を抽出する。

$ head -6 U4Zi6.txt 
# ImageMagick pixel enumeration: 256,224,65535,srgb 
0,0: (28784,45232,53456) #70B0D0 srgb(112,176,208) 
1,0: (28784,45232,53456) #70B0D0 srgb(112,176,208) 
2,0: (28784,45232,53456) #70B0D0 srgb(112,176,208) 
3,0: (28784,45232,53456) #70B0D0 srgb(112,176,208) 
4,0: (28784,45232,53456) #70B0D0 srgb(112,176,208) 
+0

グレン、優れた、どうもありがとうございました! – jparanich

+0

Glenn、好奇心から、私が "magick U4zI6.png -depth 5 U4zI6d5.txt"を実行すると、私はsrgb(115,173,206)を得ました。最初の行がsrgb(14,21,25)になると期待していました。私は間違った議論をしていますか?私はビット深度を扱うためにExcelで独自の8ビットから5ビットへの変換を行いましたが、Imagemagickがそのステップを保存できるかどうか不思議です。 – jparanich

+0

srgb強度は0:255の範囲内にあります(最初のトリプレットは0:65535の範囲内にあります)。いいえ、IMには8〜5ビットの内部コンバータはありません。このサイトでRGB555とRGB565を検索すると、いくつかの関連する質問があります。 –

1

これは、あなたが欲しいものを行う必要があります。

convert U4zI6.png -depth 8 rgb: | perl -e ' 
     # Read file, 3 RGB bytes at a time 
     { 
     local $/ = \3; 
     while(my $pixel=<STDIN>){ 
      my ($r,$g,$b) = unpack("CCC",$pixel); 
      printf("In R/G/B: %d/%d/%d\n",$r,$g,$b); 
      my $r = ($r >> 3) & 63; 
      my $g = ($g >> 3) & 63; 
      my $b = ($b >> 3) & 63; 
      printf("Out R/G/B: %d/%d/%d\n",$r,$g,$b); 
     } 
     } 
    ' 
+0

"my $ r =(($ r + 4)>> 3)& 63;"などでより正確な結果を得ることができます。実際には、これはコンポーネントをチョッピングするのではなく、繰り返します。 –

+0

@ GlennRanders-Pehrsonこれまでのように、あなたに最高のアドバイスをいただきありがとうございます。 –

関連する問題