2009-11-20 6 views
0

Dans Windows Forms Application, j'essaie d'ouvrir l'image (CMJN tiff), d'ajouter du texte, puis de réenregistrer l'image tiff CMJN, mais lorsque j'ai ouvert la image de sortie dans Photoshop, c'était l'image RVB (les couleurs semblaient différentes de l'image d'entrée). Voici le code et j'apprécie si vous pourriez m'aider.Image.Sauvegardez la question (enregistrez l'image CMJN en image CMJN)

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); 

Répondre

0

Ce que vous essayez de faire est impossible avec WinForms et GDI +. Il ne contient pas les encodeurs/décodeurs appropriés pour gérer les fichiers TIFF CMJN.

Lorsqu'un TIFF CMJN est ouvert, il doit être converti en RGB, les modifications apportées - puis reconverties en CMJN. L'espace colorimétrique CMJN dépend du périphérique. Vous devez donc utiliser LibTIFF et LittleCMS pour lire le fichier TIFF CMJN dans un tampon, le convertir en RVB en utilisant un profil approprié, ajouter le texte et le reconvertir. Tout cela nécessite l'utilisation de profils ICC ou ICM.

Il est possible d'écrire du code qui écrira directement sur un TIFF CMYK mais ils sont stockés dans des "plans" de données C, M, Y, K.

Recourez à une solution qui utilise C++ et LibTIFF/LittleCMS et vous aurez plus de chance. Peut-être une autre option est WPF qui, je crois ouvre des portes supplémentaires avec divers encodeurs/décodeurs d'image, mais je ne suis pas expert sur ce point.

+0

Selon nobugz, il existe maintenant un codeur/décodeur CMJN. Je n'ai pas essayé moi-même. Je vais rester avec LibTIFF et LittleCMS. –

Questions connexes