2017-01-28 7 views
0

イメージの#FF00FFの色を#0000FFに変更したいのですが、理想的には色合いを保ちます。だから私は、ソフトウェアがそういうことをすることさえできるのかどうかを知るために色を変えなければならないと思った。画像:このソフトウェアでは、RGBはどのように動作しますか?

しかし、その色が白に変わり、高いファズでしか変わりません。ですから、ImagemagickのRGBは他の場所と同じように動作せず、どのように動作するのか説明するためのものは何も見つかりません。

オフホワイトの部分が純粋なホワイトに置き換えられているようです。私はあなたが他のソフトウェアが何をするかのサンプルを提供していないとして、あなたは何を意味するか、100%確かではないが、私は試してみると、私たちかどうかを確認します

exec("convert ".$dir."".$file." -channel RGB -fuzz 30% -opaque rgb\(255,0,255\) -fill rgb\(0,0,255\) ".$dir."".$file); 
+2

これは現在の形では非常に不明瞭です。これらの色だけを変更したくないのですが、似たようなものも正しいですか?あなたは、あなたが望むものの例と、IMがあなたが望んでいることをしていない方法を示すことができますか? –

+0

画像を変更することについて投稿するときに画像を投稿するのがなぜ私には起こらなかったのか分かりませんが、回答は完全です、提案のおかげで;) –

答えて

2

:私はPHPを使用して

そこに行くことができます。だから、

、私たちはあなたのものと推定左側にマゼンタの色合いと右にいくつかの試験色を含む開始画像、作る場合:

convert -size 256x256 gradient:black-magenta -size 50x256 \ 
    xc:black xc:white xc:red xc:lime xc:blue +append start.png 

enter image description here

をそして、あなたはマゼンタの色合いを変更したいです青に。私は、色相変調いることを呼ぶだろうので、私は青とマゼンタの間の色相角を見つけるしたいので、私は1つのマゼンタと1つの青色画素と2x1のイメージを作成し、そのHSI値を得るでしょう:

convert xc:magenta xc:blue -append -colorspace hsi txt: 

出力

# ImageMagick pixel enumeration: 1,2,65535,hsi 
0,0: (54612.5,65535,43690) #D555FFFFAAAA hsi(300,100%,66.6667%) 
0,1: (43690,65535,21845) #AAAAFFFF5555 hsi(240,100%,33.3333%) 

そして、私は彼らの色相が60度離れて(300から240)です見ることができます。だから私は明る彩度と色相をとる-modulate演算子を使用し、100%の最初の二つ変わらずを残して、60度色相を変更します。

convert start.png -modulate 100,100,60 result.png 

enter image description here


多分それはあなたが意味するものではありませんか?たぶん、特定の色にのみ影響することを意味します。もしそうなら、それはファイルを分離するために、色相、彩度、明度層を抽出し、

まず:-)ないという難しい...難しくなりますが、:

convert start.png -colorspace HSL -separate -colorspace gray HSL-%d.png 

シングルとして私たちに色相を与えることHSL-0.png、彩度はHSL-1.png、明るさはHSL-2.pngです。

ここで、色相チャンネル用の新しいLUT(ルックアップテーブル)を作成したいので、1:1をマッピングする360ピクセルのLUTを作成します。つまり、すべてが標準にマッピングされます。

convert -size 1x360 gradient: -rotate 90 greyscale.png 

enter image description here

その後、我々は、マゼンタ(300)の周りに検索してDINKと(240)、それらが青にしたいです。だから我々は、範囲280から320のすべての画素から(あなたは0〜1の範囲に0から360度をスケーリング場合は0.16である)60度を減算したいので、いくつかの公差があります:

convert -size 1x360 gradient: -rotate 90 -colorspace gray -fx "i<280||i>320?u:u-0.16" hueCLUT.png 

enter image description here

今シンプルなスクリプトとして、それがBECOかもしれない、だから... ...

convert HSL-0.png -colorspace gray hueCLUT.png -clut HSL-1.png HSL-2.png -set colorspace HSL -combine -colorspace RGB result.png 

enter image description here

を元の画像の色相にそのLUTを適用し、それを再構築私:

#!/bin/bash 

# Make a hue CLUT, transforming magenta hues to blue 
convert -size 1x360 gradient: -rotate 90 -colorspace gray -fx "i<295||i>305?u:u-0.16" -resize 256x1! hueclut.png 

# Apply to the hue channel 
convert start.png -colorspace HSL -write MPR:HSL \ 
     -channel R -separate hueclut.png -clut \ 
     \(MPR:HSL -channel G -separate \)  \ 
     \(MPR:HSL -channel B -separate \)  \ 
     -set colorspace HSL -combine -colorspace RGB result.png 
+0

"簡単なスクリプト"のコピー&ペーストがうまくいかなかったしかし、私はあなたが掲示した上記のコマンドに従って書きました。グレーもちょっと暗くなりますが、色合いを変えて遊んだときにそれは予期しないことではありません。 –

+0

私は最終的にそこに着いてうれしく、それはあなたのために働く。最終的なRGBをsRGBに変更して、それが役立つかどうか試してみてください。あなたのプロジェクトに幸運を祈る! –

関連する問題