【问题标题】:Image.Save question (save CMYK image to CMYK image)Image.Save 问题(将 CMYK 图像保存为 CMYK 图像)
【发布时间】:2010-02-04 04:00:17
【问题描述】:

在 Windows 窗体应用程序中,我试图打开图像(CMYK tiff),添加文本,然后保存回 CMYK tiff 图像,但是当我在 Photoshop 中打开输出图像时,它是 RGB 图像(颜色看起来与输入图像不同)。以下是代码,如果您能帮助我,我将不胜感激。

Image^ chartImg = Image::FromFile( "user_chart.tif" );      
Graphics^ g = System::Drawing::Graphics::FromImage(chartImg);

String^ drawString = "Test test test test";
System::Drawing::Font^ drawFont = gcnew System::Drawing::Font("Arial", 9);
System::Drawing::SolidBrush^ drawBrush = gcnew             
System::Drawing::SolidBrush(System::Drawing::Color::Black);
float x = 100.0F;
float y = 10.0F;
System::Drawing::StringFormat^ strFormat = gcnew System::Drawing::StringFormat();
g->DrawString(drawString, drawFont, drawBrush, x, y, strFormat);

chartImg->Save("user_chart2.tif", System::Drawing::Imaging::ImageFormat::Tiff);

【问题讨论】:

    标签: winforms tiff cmyk


    【解决方案1】:

    使用 WinForms 和 GDI+ 是不可能做到的。它不包含处理 CMYK TIFF 的正确编码器/解码器。

    打开 CMYK TIFF 后,必须将其转换为 RGB,进行更改 - 然后再转换回 CMYK。

    CMYK 颜色空间取决于设备,因此您需要使用 LibTIFF 和 LittleCMS 将 CMYK TIFF 读入缓冲区,使用适当的配置文件将其转换为 RGB,添加文本并将其转换回来。所有这些都需要使用 ICC 或 ICM 配置文件。

    可以编写直接写入 CMYK TIFF 的代码,但它们存储在 C、M、Y、K 数据的“平面”中。

    求助于使用 C++ 和 LibTIFF/LittleCMS 的解决方案,你会有更好的运气。

    也许另一种选择是 WPF,我相信它为各种图像编码器/解码器打开了额外的大门,但我不是这方面的专家。

    【讨论】:

    • 根据 nobugz 的说法,现在有一个 CMYK 编码器/解码器。我自己没试过。我会坚持使用 LibTIFF 和 LittleCMS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多