2008-09-29 14 views
1

Existe-t-il un moyen simple de coloriser par programme les images dans .NET? Fondamentalement, nous avons une image en noir et blanc et avons besoin de mettre une couche de rose par-dessus et de réduire l'opacité de ce calque pour rendre l'image colorisée en rose."Colorisation" des images dans .NET

Répondre

2

Vous devriez utiliser la magnifique bibliothèque ImageMagick. Il a des liaisons .NET donc pas de problème là-bas.

Amusez-vous! :)

0

La manière qui vient à l'esprit est d'utiliser les paquets de dessin pour dessiner un rectangle sur l'image dans une couleur donnée (vous pouvez définir alpha). Ce n'est pas très efficace mais, avec la mise en cache, cela ne ferait aucun mal, même sur un serveur occupé.

0

Ceci est un peu trop sur mesure pour une méthode .NET Framework .. Si vous ne trouvez pas une solution unique d'appel de méthode. Je poste quelque chose qui pourrait être quelque chose à regarder.

Si vous avez un fichier WPF, vous pouvez charger l'image dans un contrôle. Avoir un autre contrôle (rectangle avec remplissage rose et transparence) sur le dessus. (Utilisez quelque chose comme une grille pour la mise en page de sorte que les deux se chevauchent parfaitement) Ensuite, vous pouvez

RenderTargetBitmap bmp = new RenderTargetBitmap(imageWidth,imageHeight, 
    DPIHoriz, DPIVert, 
    PixelFormats.Pbrga32); 
// if you don't want to make the controls 'visible' on screen, you need to trigger size calculations explicitly. 
grid.Measure(new Size(imageWidth, imageHeight)); 
grid.Arrange(new Rect(0,0, imageWidth, imageHeight); 
bmp.Render(grid); 

Ainsi, vous obtenez tout ce que vous voyez à l'écran, écrit dans le Bitmap en mémoire. Vous pourriez alors l'enregistrer. Si cela ne fonctionne pas, vous pouvez opter pour un contrôle de niveau de pixel avec la classe WriteableBitmap et effectuer un travail d'octet.

0

Je pense que ce sera un peu plus compliqué si vous voulez colorier une image plutôt que de simplement mettre un calque smi-transparent dessus. Si vous voulez avoir le même effet que le mode de calque "screen" dans PhotoShop, vous devez remplacer toutes les nuances de noir dans l'image par les nuances de la nouvelle couleur pour garder les parties blanches blanches.

Il peut très certainement être fait en .NET mais je suppose qu'il ne serait pas mal de regarder dans une bibliothèque de quelque sorte.