目次→http://1studying.blogspot.jp/2017/07/c-magicknetmokuzi.html#kuw07
「Magick.NET」の「ICCプロファイル」の扱い方。
先に、
「Photoshop」でのカラーマネジメント方法を知る必要があります。
Photoshop上でのカラーモードとICCプロファイル
については以下のリンク先で説明しています。
http://1studying.blogspot.jp/2017/05/photoshopicc.html
色々なプロファイル
画像ファイル「ICCプロファイル」の他にも、
様々な「プロファイル」が付加されている(埋め込まれている)可能性があります。
using (var myMagick = new ImageMagick.MagickImage("./test_RGB.psd")) { var strArray = myMagick.ProfileNames.ToArray(); MessageBox.Show(strArray.Length.ToString()); foreach (var profileName in strArray) { MessageBox.Show(profileName); //埋め込みプロファイル名を表示 } } MessageBox.Show("処理終了");の様にすると確認できます。
実行すると、
「5」「8bim」「exif」「icc」「iptc」「xmp」「処理終了」
のように順表示されます。
(ファイルに埋め込まれていないプロファイルは表示されません。)
・「8bim」(8bimプロファイル)
→「myMagick.Get8BimProfile()」
・「exif」(Exif情報)
→「myMagick.GetExifProfile()」
・「icc」(カラーマネジメント用「ICCプロファイル」)
→「myMagick.GetColorProfile()」
画像を表示する際の、色変換フィルタ。
・「iptc」(IPTC情報)
→「myMagick.GetIptcProfile()」
・「xmp」(Xmp情報)
→「myMagick.GetXmpProfile()」
「Photoshop」上でファイル情報からも確認できる。(IPTC情報も編集可)
「Magick.NET」の標準「ICCプロファイル」
「Magick.NET」では、標準的に以下の「ICCプロファイル」を内蔵しています。
「AdobeRGB1998」「AppleRGB」「CoatedFOGRA39」
「ColorMatchRGB」「SRGB」「USWebCoatedSWOP」
です。
普段は、
RGBカラーは「SRGB」
CMYKカラーは「CoatedFOGRA39」(USWebCoatedSWOPより結果が良い)
辺りを使用していれば問題ないと思います。
「ICCプロファイル」変換(普通の方法)
「Magick.NET」に内蔵された「ICCプロファイル」で変換します。
using (var myMagick = new ImageMagick.MagickImage("./test_RGB.psd")) { //「マッチング方法」→「Perceptual」知覚的(Photoshopデフォルト) myMagick.RenderingIntent = ImageMagick.RenderingIntent.Perceptual; //「黒点の補正を使用」 myMagick.BlackPointCompensation = true; //「ICCプロファイル」が埋め込まれていなければ if (myMagick.GetColorProfile() == null) { myMagick.AddProfile(ImageMagick.ColorProfile.SRGB); MessageBox.Show("埋め込みました"); } //埋め込まれた「ICCプロファイル」(RGB)から //他の「ICCプロファイル」(CMYK)へ変換 myMagick.AddProfile(ImageMagick.ColorProfile.CoatedFOGRA39); //プロファイルの削除 myMagick.RemoveProfile("icc"); //「背景」にする(アルファを白くします) myMagick.ColorAlpha(ImageMagick.MagickColors.White); myMagick.Write("./test_outfile.tif"); } MessageBox.Show("処理終了。");「RGB」から「CMYK」へカラーモードが変更されました。
「Photoshop」にそこそこ近い結果の画像が取得出来ます。
「ICCプロファイル」が現在の画像に埋め込まれているかの確認を
if (myMagick.GetColorProfile() == null)で行っています
「AddProfile()」は画像へ「ICCプロファイル」を埋め込みます。
myMagick.AddProfile(ImageMagick.ColorProfile.SRGB);既に「ICCプロファイル」が埋め込まれている場合は、
既に埋め込まれている「ICCプロファイル」から、
新たに指定した「ICCプロファイル」へ「色変換」した上で
「ICCプロファイル」が埋め込み直されます。
埋め込まれた「ICCプロファイル」を削除するのは
myMagick.RemoveProfile("icc");で行います。
何故その「ICCプロファイル」を選択したのか、
何故その変換方式や設定を使用しているのか、
については次のトピックで解説します。
「ICCプロファイル」変換(普通の方法)解説
RGBの「ICCプロファイル」
・「SRGB」を使用する理由
「Photoshop」のRGB時のデフォルトの「ICCプロファイル」が
「sRGB IEC61966-2.1」となっています。
これは、大抵のモニタの色域が「sRGB」の為です。
「SRGB」を指定すると、
「sRGB IEC61966-2.1」(Photoshopのデフォルトと同じ物)
が自動で使用されます。
myMagick.AddProfile(ImageMagick.ColorProfile.SRGB);
CMYKの「ICCプロファイル」
・「CoatedFOGRA27」を使用する理由
印刷に使われる「PDF/X」でCMYK書き出しする際、
Adobeのソフトから書き出し時「ICCプロファイル」指定無しの場合、
「PDF/X-1a:2001」では「USWebCoatedSWOP.icc」
「PDF/X-3:2002」(X-1aの上位互換)では「CoatedFOGRA27.icc」
がデフォルトで使われます。
「Photoshop」デフォルトの「Japan Color 2001 Coated」に
より近い結果がでる「CoatedFOGRA27」の方を使用するのが良いでしょう。
myMagick.AddProfile(ImageMagick.ColorProfile.CoatedFOGRA39);
「変換方式」
・「LCMS(Little CMS)」を使用する理由
「Magick.NET」は何も指定しなくても「LCMS(Little CMS)」を使用します。
(「LCMS」はオープンソースの変換エンジンです)
「Photoshop」では「ACE(Adobe Color Engine)」が使用されています。
が、現在「Magick.NET」からは変換エンジンを指定する事ができません。
その為、特に指定しません。(「LCMS(Little CMS)」が使用されます)
「マッチング方法」(レンダリングインテント)
・「Perceptual」(知覚的)を利用する理由
「Photoshop」のデフォルト設定が「知覚的」となっている為これを使用します。
以下のような設定も可能です。
「Absolute」(絶対的な色域を保持)
「Perceptual」(知覚的)(Photoshopデフォルト)
「Relative」(相対的な色域を保持)
「Saturation」(彩度)
myMagick.RenderingIntent = ImageMagick.RenderingIntent.Perceptual;
「黒点の補正を使用」
・「黒点の補正を使用」をtrueにする理由
「Photoshop」の「黒点の補正を使用」デフォルト設定が「ON」
となっている為これを使用します。
myMagick.BlackPointCompensation = true;
「ディザの使用」
・「ディザの使用」をtrueにしたいが出来ない。
「Photoshop」の「ディザの使用」デフォルト設定が「ON」となっている為です。
が、「Magick.NET」内に設定が今のところ見当たりませんでした。
「Photoshop」カラーモード変換をエミュレート
自分用めも:
「C# Magick.NETでPhotoshopカラーモード変換をエミュレート」非公開
http://00studying.blogspot.jp/2017/07/c-magicknetcolorpshopemu.html
他
CMYKとRGBの相互変換時、
「myMagick.ColorSpace = ImageMagick.ColorSpace.sRGB;」
や
「myMagick.ColorType = ImageMagick.ColorType.TrueColor;」
で変換行うと
「可変R255G255B←→C」
「255R可変G255B←→M」
「255R255G可変B←→Y」
の数値がそのまま変換されます。
Kのみ「可変R可変G可変B←K」で変換されます。
「Magick.NET」の使い方は
https://magick.codeplex.com/documentation
に載っています
以下のサイトを参考にしました。
[めも][ImageMagick]Magick.NET のカラマネAPI
http://www.cat-ears.net/?p=39561
Windowsカラーマネジメントプログラミング入門(?)
http://blog.livedoor.jp/yamma_ma/archives/8414849.html
Windowsカラーマネジメントプログラミング入門(2)
http://blog.livedoor.jp/yamma_ma/archives/8434429.html
Windowsカラーマネジメントプログラミング入門(3)
http://blog.livedoor.jp/yamma_ma/archives/43764758.html
Windowsのカラーマネジメントシステム まとめ
http://blog.livedoor.jp/yamma_ma/archives/35547647.html
ImageMagickのPSDの扱い方
http://paranoid360.blogspot.jp/2011/04/imagemagickpsd.html
ImageMagick PSD続き、PNGをインデックスカラーで透過
http://paranoid360.blogspot.jp/2011/04/imagemagick-psdpng.html
ImageMagick で ICC プロファイルを扱う #3 コマンド解説
https://blog.awm.jp/2017/08/06/imicc/
0 件のコメント:
コメントを投稿