convertir de couleur de 8 bits bmp image à niveaux de gris 8 bits bmp
C'est mon objet bitmap
Bitmap b = new Bitmap(columns, rows, PixelFormat.Format8bppIndexed);
BitmapData bmd = b.LockBits(new Rectangle(0, 0, columns, rows), ImageLockMode.ReadWrite, b.PixelFormat);
Comment puis-je convertir ce en 8 bits en niveaux de gris image bitmap ?
Pourquoi êtes-vous à l'aide de
bobpowell.net/grayscale.htm
n'oubliez pas de marquer l'un de la réponse acceptée, une fois que vous vérifiez pour voir ce qui fonctionne pour vous. Bien que toutes les réponses sont fondamentalement les mêmes
LockBits
?bobpowell.net/grayscale.htm
n'oubliez pas de marquer l'un de la réponse acceptée, une fois que vous vérifiez pour voir ce qui fonctionne pour vous. Bien que toutes les réponses sont fondamentalement les mêmes
OriginalL'auteur crowso | 2011-12-18
Vous devez vous connecter pour publier un commentaire.
salut vous pouvez changer la palette de couleurs en niveaux de gris d'une
bien que le code suivant est à Vb.net. Vous pouvez facilement convertir en C#
Source d'origine -> http://social.msdn.microsoft.com/Forums/en-us/vblanguage/thread/500f7827-06cf-4646-a4a1-e075c16bbb38
OriginalL'auteur klijo
Oui, pas besoin de changer les pixels, juste la palette est très bien. ColorPalette est une pâte feuilletée type, cet exemple de code a bien fonctionné:
Je n'ai pas vraiment vous recommandons d'utiliser ce code, indexé formats de pixel sont un pain pita à traiter. Vous trouverez une rapide et plus généralement de couleur-niveaux de gris de conversion en cette réponse.
Optimisation d'une palette n'est pertinente que lorsque vous avez besoin de convertir un 24bpp image d'un 8bpp image. Ce qui exige une cartographie de 16 millions de couleurs possibles pour seulement 256 couleurs disponibles. Ce n'est pas ce que vous avez demandé.
ce qui signifie que le C# se met dans la palette de couleurs par défaut toujours lors de la création d'un 8 bits de l'image ?
Oui, GDI+ crée une palette par défaut lorsque vous créez un nouveau 8bpp bitmap à partir de zéro. Il est rare de faire ça, il n'y a pas beaucoup que vous pouvez faire avec des images qui ont l'un des indexé formats de pixel. Vous ne pouvez pas dessiner. Un programme de peinture est la source typique de 8bpp bitmaps.
Ce n'est pas réellement une "cession à soi-même" comme le commentaire de code dit. La lecture de la palette crée un nouvel objet, qui est pourquoi cette mission à la fin est nécessaire, et pourquoi la palette peut pas être édité directement avec
bmp.Palette.Entries[index] = value;
.OriginalL'auteur Hans Passant
Quelque chose comme:
Ne
SetPixel
même travail sur l'indexation des images? Ils ont des indices que les valeurs de pixel, pas de couleurs.OriginalL'auteur Emmanuel N
Noter que si vous voulez faire la même conversion que les modernes les téléviseurs Hd, vous aurez envie d'utiliser le Rec. 709 coefficients de conversion. Celles indiquées ci-dessus (.3, .59, .11) sont (presque) de la Rec. 601 (norme def) coefficients. La Rec. 709 coefficients sont gris = 0.2126 R' + 0.7152 G' + 0.0722 B', où R', G' et B' sont les gamma ajusté de rouge, de vert et de bleu.
OriginalL'auteur user1118321
Cochez cette lien. Nous l'avons fait à l'université et il fonctionne.
C'est tout ce dont vous avez besoin avec l'entrée et la sortie.
OriginalL'auteur radu florescu