1つのプログラムの生データソースとしてPPMを生成する必要があります。入力としてたくさんのpngがあり、ppmを変換します。 mogrify
のようなツールを試してみると、ファイルが生成されますが、GIMPなどの画像ビューアプログラムではこれらを読み取ることができません。
mogrify -format ppm *.png
netpbm
パッケージをインストールしました。他の場所から他のランダムなPPMを開こうとしましたが、どの画像ビューアでもそれらのファイルを開いて読み取ることができます。自分で生成したファイルに問題があります。 mogrify
で作成されたファイルは、解像度に適したサイズであり、ビットが含まれているようです。
16進ファイルビューアでは、作業ファイルのヘッダーは次のようになります。
P6 640480 25
Imagemagickで生成された鉱山:
P7幅640高さ480奥行き3最大255TUPLTYPE RGB ENDHD
おそらく、正しいファイル形式を作成するためにImagemagickに他のパラメータを指定する必要がありますが、何ですか?または、pngをppmに簡単に変換できる別のツールはありますか?
ウィキペディアのページで [〜#〜] ppm [〜#〜] と [〜#〜] pam [〜# 〜] PPMの魔法の数は次のとおりです。
各ファイルは、ファイルのタイプ(PBM、PGM、およびPPM)とそのエンコーディング(ASCIIまたはバイナリ)を説明する2バイトのマジックナンバー(ASCII)で始まります。マジックナンバーは大文字のPとそれに続く1桁の数字です。
Magic Number Type Encoding
P1 Portable bitmap ASCII
P2 Portable graymap ASCII
P3 Portable pixmap ASCII
P4 Portable bitmap Binary
P5 Portable graymap Binary
P6 Portable pixmap Binary
PAM形式では、マジックナンバーはP7です。また、古いフォーマット(PPM、PNM、PGM、PBM)との違いは次のとおりです。
PAMファイル形式のヘッダーはP7で始まり、(他の形式とは異なり)明示的な終了で終わります:ENDHDR。
PAMのプレーンな(人間が読める形式のASCIIベースの)バージョンはありません。 PAMファイルは常にバイナリであり、PAM出力を生成するNetpbmプログラムでswitch -plainを使用しようとすると、エラーメッセージが表示されます。
PBMに対応する白黒バージョンのPAM(深さ1、タプルタイプBLACKANDWHITE)の場合、PAMはPBMがピクセルあたり1ビットを使用する(1バイトに8ピクセルをパックする)代わりに、ピクセルあたり1バイトを使用します。また、このようなPAMイメージの値1は、PBMの黒(「インクオン」)ではなく、白(「ライトオン」)を表します。
mogrify
を使用してPNGファイルをPPMファイルに変換すると、次のようになります。
blah.pngをblah.ppmに変換します:
mogrify -format ppm blah.png
ファイル情報:
$ ll |grep bla
-rw-rw-r-- 1 saml saml 11870 May 29 21:36 blah.png
-rw-rw-r-- 1 saml saml 530613 May 29 21:36 blah.ppm
情報を特定する:
$ identify blah.png blah.ppm
blah.png PNG 926x191 926x191+0+0 8-bit DirectClass 11.9KB 0.000u 0:00.000
blah.ppm[1] PNM 926x191 926x191+0+0 8-bit DirectClass 531KB 0.000u 0:00.000
16進ヘッダー情報:
$ xxd blah.ppm|head -3
0000000: 5036 0a39 3236 2031 3931 0a32 3535 0af2 P6.926 191.255..
0000010: f1f0 0000 0000 0000 0000 0000 0000 0000 ................
0000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
$ xxd blah.png |head -3
0000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
0000010: 0000 039e 0000 00bf 0802 0000 0019 f594 ................
0000020: be00 0000 0373 4249 5408 0808 dbe1 4fe0 .....sBIT.....O.
ご覧のとおり、mogrify
はPPMファイルを正しく生成しました(P6を参照)。
PPMに変換しているソース画像に、PPM形式ではサポートされていない特別なものがあり、mogrifyはそれを自動的に処理できないのではないかと思います。
identify
コマンドを使用してソースイメージに問い合わせることをお勧めします。
identify <original image>
OPは元の画像 をここ に投稿しました。この画像を自分で実行すると、mogrify
がPPMファイルではなくPAMファイルを返すという彼の結果を再現できませんでした。
生成されたppm:
mogrify -format ppm some.png
元のpngファイルと新しいppmファイル:
ll|grep some
-rw-rw-r-- 1 saml saml 387940 May 30 00:36 some.png
-rw-rw-r-- 1 saml saml 921615 May 30 07:00 some.ppm
$ identify some.p*
some.png PNG 640x480 640x480+0+0 8-bit DirectClass 388KB 0.000u 0:00.000
some.ppm[1] PNM 640x480 640x480+0+0 8-bit DirectClass 922KB 0.000u 0:00.009
ファイルからのヘッダー情報:
$ xxd some.png |head -3
0000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
0000010: 0000 0280 0000 01e0 0802 0000 00ba b34b ...............K
0000020: b300 0020 0049 4441 5478 0184 c181 b21c ... .IDATx......
$ xxd some.ppm |head -3
0000000: 5036 0a36 3430 2034 3830 0a32 3535 0a65 P6.640 480.255.e
0000010: 6e6b 656e 6b62 6e6a 626e 6a5f 706a 5f70 nkenkbnjbnj_pj_p
0000020: 6a5e 726b 5e72 6b5a 6d66 596c 6559 6a64 j^rk^rkZmfYleYjd
ファイルは正常に変換されました。ランニング display some.ppm
ファイルが表示されたので、これをどうすればよいかわかりません。 OPのidentifyコマンドでファイルがsRGBとして表示され、システム上ではこれらのファイルが「8ビットDirectClass」として表示されることに気付きました。これら2つの違いは ここで詳しく説明されています が、どうすればよいかわかりません。
これを調査しているときに、sRBGとPNGに関連するImageMagickにバグがあるいくつかのスレッドに出くわしました。これが1つの例への リンクです 。