2010-05-13 3 views
1

Bonjour aux membres de stackoverflow! Ce est mon premier post mais j'adore lire les questions et réponses sur ce forum ! J'utilise VS2008, CSharp, NET 3.5 et Windows XP Pro derniers correctifs sur ce projet .comment convertir une image bitmap en image CIELab?

Je lis dans un fichier jpeg à une image bitmap en utilisant CSharp dans la manière suivante:

Bitmap bmp = new Bitmap("background.jpg"); 
Graphics g = Graphics.FromImage(bmp); 

je puis écrire un texte et des logos sur g utilisant divers DrawString et commandes DrawImage . Je veux alors d'écrire ce bitmap dans un fichier TIFF en utilisant la commande : fichier

bmp.Save("final_artwork.tif", ImageFormat.Tiff); 

Je ne sais pas ce que les balises TIFF dans l'en-tête de la résultante finale TIFF sera quand vous bmp .Enregistre comme montré ci-dessus?

Mais ce que je veux produire est un fichier image TIFF avec PHOTOMETRIQUE CIELab, bitspersample 8, samplesperpixel 3, FILLORDER MSB2LSB, ORIENTATIONS TOPLEFT, PLANARCONFIG CONTIG, ainsi que non compressé et singlestrip.

Im assez certain, au moins je ne rien trouvé sur Microsoft API et CIELab, je ne peux pas convertir le bitmap image pour photométrie CIELab et les autres exigences à l'aide de quoi que ce soit l'API Microsoft ou .NET 3.5 environnement - quelqu'un s'il vous plaît corriger si je me trompe.

Je l'ai utilisé libtiff dans un projet le passé, mais juste pour écrire un fichier tiff où l'image tiff en mémoire était déjà au format CIELab et toutes les autres exigences comme noté par-dessus. Je ne suis pas certain libtiff peut convertir de mon image bitmap CSharp, qui est photométrique probablement RVB, à CIELab, 8 bps, et 3 spp? Peut-être que je peux utiliser OpenCVImage ou Emgu CV ou quelque chose de similaire?

La question principale est ce qui se passe être la meilleure façon d'obtenir mon image bitmap finale tel que décrit ci-dessus dans un CIELab TIFF et rencontrer également les autres exigences par-dessus?

Merci pour toutes les suggestions et le code fragments que vous pouvez fournir?

Neal Davis

+0

La fonction TranslateBitmapBits peut-elle être utilisée pour ce que je veux faire ci-dessus? –

Répondre

1

Essayez la bibliothèque ImageMagick, je suis sûr qu'il ya un bon emballage C# pour elle, il supporte à peu près tous les formats de fichier image connue de l'humanité!

0

Je voudrais parler de ma bibliothèque passe-projet: Colourful

Il supporte la conversion de RVB en CIELab. Et vous avez beaucoup d'options à définir, comme les points blancs et les espaces de travail RVB. Il fait également l'adaptation chromatique, de sorte que les couleurs résultantes devraient être le meilleur résultat possible.

Mais vous devrez convertir votre image pixel par pixel, par exemple en utilisant la méthode LockBits, qui est plus rapide que SetPixel, GetPixel.

Questions connexes