私は、画像にテキストを追加することを中核とするプロジェクトに取り組んでいます。たとえば、背景画像(B)と、指定されたフォント、ポイントサイズ、フォント(A)のテキストを組み合わせて、2つを合成して生成します。 (C):
最終的にはこれらの画像を使用して印刷されるため、背景はCMYKカラースペースを使用しており、プロセス全体をCMYK内に維持する必要があります。そうしないと、印刷時に色が正しく表示されません。(注:CodeProjectの色空間と.NETに関する優れた記事)
これらの画像を一緒に合成するいくつかの異なる方法を試しました。
- System.Drawingは、すべてを暗黙的にRGBに変換します
- System.Windows.Media.Imaging-合成メソッドはありません
- System.XAML / WPF-非常に有望ですが、RenderTargetBitmapはPixelFormats.Cmyk32では機能しません(ArgumentExceptionをスローします)。
価格が高くなり始め、上昇し続けているように見えるので、私はサードパーティの商用コンポーネントを調べましたが、試していません:
- グラフィックスミル(2010年12月現在で約US $ 1800)
- Atalasoft DotImage(2010年12月現在で約US $ 3300)
これは.NET4で可能ですか?
編集:
他の誰かが少し違うことをしたいと思うかもしれないのでWindows.System.Media.Imaging
、CMYKにロードできるフォーマットを変換するだけです。これが私が使用したコードです。
var bitmapConverter = new FormatConvertedBitmap();
bitmapConverter.BeginInit();
bitmapConverter.Source = sourceImage;
bitmapConverter.DestinationFormat = PixelFormats.Cmyk32;
bitmapConverter.EndInit();
上記のコードを明確にするために、画像ソースをCMYK32(透明度なし)に変換しますが、特定のクラスを使用している場合(つまりRenderTargetBitmap
、上記のImageSourceを渡すと例外がスローされます)。