2011-09-14 22 views
2

私はCMYKカラーPDFファイルを持っています(1ページと画像のみ、テキストなし)。 は私が(私は「ピクセル」としての位置を呼び出す)、このPDFファイルの「ピクセル」のCMYKカラー値を取得したい、現在、私は次のようにそれを行う:
C#:PDFページ上の位置でカラー値(CMYK)を取得する方法は?

- Convert the PDF page to bitmap <br> 
- Get the color value of this pixel: 
     Color cPixel = bmpImage.GetPixel(x, y); 

最後に、私はcPixelを変換します(元のファイルでは100%Kですが、結果は非常に異なります)。問題は私の処理から来ていると思います:CMYKファイル=> RGBで処理するビットマップに変換し、RGBに色を読み取る)=> CMYKに結果を変換式をRGB-> CMYKへ変換するために使用されている:。

Black = minimum(1-Red,1-Green,1-Blue) 
Cyan = (1-Red-Black)/(1-Black) 
Magenta = (1-Green-Black)/(1-Black) 
Yellow = (1-Blue-Black)/(1-Black) 

今、私はPDFから直接CMYKの値を読んでみたいと思っています。読んだり、サポートしてくれてありがとうございました。

ありがとうございました!

答えて

1

色彩科学についてよくわかりませんが、EasyRGBの公式を参照のために参考にしてください:RGB to CMY、次にCMY to CMYK。カラープロファイルは視覚的にどのように見えるので、これらの公式は近似に過ぎないと思います。これらの式の使用については、postを参照してください。

編集:

thisによると、あなたの式が正しい見えます。 RGBの値が正規化されていることを確認してください(0から1.0の間)。

1

最適な解決策は、ページコンテンツストリームを実行し、ページ上のどこにイメージがあるかを判断し、どのイメージピクセルがページ位置に対応しているかを確認し、CMYKイメージから直接ピクセルを抽出することです。実行するすべてのコンバージョンには小さな誤差が含まれているため、最終的な結果は期待したものとは異なります。あなたが使った数式はおおよその変換を与えます。 RGBとCMYKはデバイスに依存する色空間であるため、より正確な変換はLabなどの中間デバイスに依存しない色空間を経由します。したがって、CMYK→RGBはCMYK→Lab→RGBとなります。 http://forums.adobe.com/thread/428899をし、ここに:この上 もっと議論あなたはここで読むことができますhttp://en.wikipedia.org/wiki/Lab_color_space

2

これらの式を(逆変換のために、同様の式)RGBからCMYKに変換するために、すべてのインターネット上で貼り付けられているが、それらは想定しているため非常に悪い結果をもたらしますカラーシステムは線形システムであることが望ましい。これは現実から非常に遠いです。驚くべきことではありませんが、結果として得られる色は元の色と非常に遠く離れています。より良い結果を得るには、カラープロファイルを使用する必要があります(デバイスに依存しないプロファイルを使用できます)。色変換は、Windowsの機能によって完全にサポートされています。

残念ながら、カラープロファイルを使用してRGBからCMYKに変換する機能は、C#では直接公開されていません。しかし、あなたはこの完全な解決策を見つけることができますanswer

カラープロファイルを使用したCMYKからRGBへの変換は、C#で簡単に実現できます。この解答はanswerにあります。それを実装する前に、それを試すことができますonline

関連する問題