2017-04-19 13 views
0

gimpには、ロードされたイメージからパレットを生成する機能があります。私はすべての画像(私は必ずしもこれらの写真の作者ではない)が共通のパレットを共有することを望んでいるので、LCD画面に表示することがより容易になるからです。複数のjpgから共通のパレットを生成するグラフィックスプログラム

これを行うプログラムはありますか?または一部のスクリプトgimpまたはimagemagick

+0

ます:レイヤーなど、すべてのJPEGファイルは、2)それらすべて3をディザリングする)(gimp_image_convert_indexed使用1)負荷)おそらくパレット4をエクスポート)反復後でので、あなたがそれを見ることができ進でそれをダンプすることを選択します/各レイヤーを保存します。しかし、ファイルの数は利用可能なメモリに依存し、パレットは最大256色ですが、LCDは256色以上を表示できますか? – xenoid

答えて

1

はこれを行うには、いくつかの方法があります。

  1. 使用デフォルトVGAまたはWEBパレットのようにディザリング用に設計されたパレットと

    をディザリング。これを行う方法の

    :私はこのようにそれを行います。このため、より洗練されたアプローチは

  2. 単一のモザイク

    にすべての画像をマージし、ツールあなたとあなたが望むすべての画像を含むこの大きな画像のためのパレットを計算...ちょうどディザリンググーグルそこも出ています今すぐ使用してください。その後、元の画像(またはモザイク、その後モザイク)のそれぞれにこのパレットを使用します。

  3. 計算パレットは自分

    あなたはすべての画像のヒストグラムを計算して、色数を下げるためにクラスタリングのいくつかの種類を使用する必要があります。これにもっと多くのイメージを含めるには、すべてのイメージのヒストグラムを計算します(イメージ間でリセットしません)。残りは単一イメージの場合と同じです。だから、あなたの色量子化コードにアクセスすれば、ヒストグラムの部分を変更するだけです...あなたが望むすべての画像をループして(最初の画像のヒストグラムを消去するだけで)ループを追加します。

    ここ

    私はカラー量子化を行う方法の例:私はGIMPImageMagickのを使用していないので、私は今そこにあなたを助けることはできませんが

あなたは少なくとも彼らの文書で何を探すべきかを知っています...

1

あなたがしようとしていることが、カラーパレットを持たないJPEG画像に適用可能かどうかはわかりません。しかし、コマンドラインでImageMagickの可能なテクニックは、すべての画像をまとめて色の数を減らしてから、それを"パレット"として保存します(最小化/重複除外)。他の画像にも適用できます。あなたが任意の画像を表示する前に、そのパレットにマッピングし、今

magick image1.jpg image2.jpg ... +append -colors 250 -unique-colors palette.png 

だから、最初のステップは、250色を言うの、共通のパレットを抽出することである

magick image.jpg -remap palette.png result.png 

あなたは

magick +dither image.jpg -remap palette.png result.png 

これまでJPEG全体ではなくPNGを使用していましたが、 JPEGパレットの問題の原因ですが、同じコマンドを使用してJPEGを試すことができます。私は間違いなくあなたがGIF、PNGまたはNetPBM PPM形式を使用して少なくともパレット情報を保存することをお勧めします。ちょうど楽しみのため


、のは、ホワイトハウスの絵であることを試してみましょう:

enter image description here

は、の3色の本当に貧しいパレットを作ろう - 、赤、黄色、シアン:

convert xc:red xc:yellow xc:cyan +append palette.png 

enter image description here

それディザ付き:

convert whitehouse.jpg -remap palette.png dither.png 

enter image description here

と再びなし:@Spektreは以下のコメントで指摘するように

convert whitehouse.jpg +dither -remap palette.png undither.png 

enter image description here

、あなたがそのパレットを渡しすることができます一部のBYTE配列のLCDまたはルックアップテーブルのようなもの。そのような場合は、このような人間/アスキー的にパレットを参照することができます

convert palette.png txt: 

# ImageMagick pixel enumeration: 3,1,65535,srgb 
0,0: (65535,0,0) #FF0000 red 
1,0: (65535,65535,0) #FFFF00 yellow 
2,0: (0,65535,65535) #00FFFF cyan 

をそして、あなたは、このようなバイナリではR、G & B値の9バイトのファイルを取得することができます - 私はあなたはGimpので

convert palette.png -depth 8 rgb:palette.bin 

xd palette.bin 
00000000: ff00 00ff ff00 00ff ff     ......... 
+0

出力はJPGではなく、いくつかのインデックス付きカラーフォーマットのLCD用のBYTE配列です...しかし、サブ結果を保存する必要がある場合は、JPGが問題になります。 LCDがそれ自体ではあるが良いとは言えず、一般的な色に変換するとより優れた視覚的品質が得られるのでなければ... – Spektre

+0

@Spektre洞察をお寄せいただきありがとうございます。私はLCDに詳しくはないので、 BYTE配列について説明しておきましょう。再度、感謝します。 –

+1

私はちょうどここで推測していますが、私は低レベルのHWの背景LCDは含まれているので、教育上の推測です... – Spektre

関連する問題