Méthode de conversion en niveaux de gris pour les images en pixels 16 bits
Dans le traitement d'image, la conversion des niveaux de gris définit généralement les composantes rouge, verte et bleue (RVB) de chaque pixel sur une valeur de luminosité. Cependant, il existe un moyen de convertir une image en niveaux de gris en utilisant un format 16 bits par pixel.
Utilisez le constructeur PixelFormat
Pour convertir une image en niveaux de gris à l'aide de cette méthode, vous pouvez utiliser le constructeur PixelFormat de la classe Bitmap. Un exemple est le suivant :
<code class="language-c#">Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);</code>
Cela créera un nouveau bitmap d'une taille de 2x2 pixels et d'un format de pixel de 16 bits par pixel en niveaux de gris.
Convertir l'image existante en niveaux de gris
Pour convertir une image existante en niveaux de gris, vous pouvez utiliser une boucle pour parcourir les pixels et les définir sur une couleur en niveaux de gris. Un exemple est le suivant :
<code class="language-c#">// 代码片段略,此处需要补充完整代码以实现灰度转换</code>
Ce code parcourt chaque pixel du bitmap c et définit la composante rouge sur la valeur de luminosité et les composantes verte et bleue sur zéro, la convertissant ainsi en niveaux de gris. Le bitmap d résultant contient une version en niveaux de gris de l'image originale.
Un moyen rapide d'utiliser ColorMatrix
Convertissez plus rapidement les images en niveaux de gris à l'aide de ColorMatrix :
<code class="language-c#">public static Bitmap MakeGrayscale3(Bitmap original) { // 创建一个与原始图像大小相同的空白位图 Bitmap newBitmap = new Bitmap(original.Width, original.Height); // 从新图像获取图形对象 using (Graphics g = Graphics.FromImage(newBitmap)) { // 创建灰度ColorMatrix ColorMatrix colorMatrix = new ColorMatrix( new float[][] { new float[] {.3f, .3f, .3f, 0, 0}, new float[] {.59f, .59f, .59f, 0, 0}, new float[] {.11f, .11f, .11f, 0, 0}, new float[] {0, 0, 0, 1, 0}, new float[] {0, 0, 0, 0, 1} }); // 创建一些图像属性 using (ImageAttributes attributes = new ImageAttributes()) { // 设置颜色矩阵属性 attributes.SetColorMatrix(colorMatrix); // 使用灰度颜色矩阵在新图像上绘制原始图像 g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes); } } // 返回新的位图 return newBitmap; }</code>
Cette méthode utilise un ColorMatrix pour effectuer une conversion en niveaux de gris, ce qui est beaucoup plus rapide qu'une itération manuelle à travers les pixels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!