Image.Save question (запазване на CMYK изображение в CMYK изображение)

В приложението Windows Forms се опитвам да отворя изображението (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);

person Bongsun Lee    schedule 20.11.2009    source източник


Отговори (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, която според мен отваря допълнителни врати с различни енкодери/декодери на изображения, но не съм експерт по това.

person Community    schedule 20.11.2009
comment
Според nobugz вече има CMYK енкодер/декодер. Аз самият не съм го пробвал. Ще се придържам към LibTIFF и LittleCMS. - person ; 21.11.2009