Techniques de conversion d'images en niveaux de gris 16 bits
Ce guide explique comment convertir des images au format niveaux de gris 16 bits sans ajuster manuellement les composants RVB aux valeurs de luminance.
Création d'un nouveau bitmap en niveaux de gris 16 bits :
La méthode la plus simple consiste à utiliser le constructeur System.Drawing.Bitmap
avec le paramètre System.Drawing.Imaging.PixelFormat
. Cela crée directement un nouveau bitmap avec le format de niveaux de gris 16 bits souhaité :
<code class="language-csharp">Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);</code>
Cet extrait de code génère un bitmap de 2x2 pixels en niveaux de gris de 16 bits. Ajustez les dimensions selon vos besoins pour votre image.
Conversion d'une image existante en niveaux de gris 16 bits :
Pour convertir un bitmap existant, vous devrez parcourir chaque pixel et redéfinir ses propriétés de couleur. Bien que possible, cette méthode est moins efficace pour les images plus grandes.
<code class="language-csharp">// (Pixel iteration code would go here – omitted for brevity due to inefficiency)</code>
Conversion optimisée des niveaux de gris à l'aide de ColorMatrix :
Pour une conversion en niveaux de gris beaucoup plus rapide et plus efficace, utilisez un ColorMatrix
. Cette approche applique une matrice de transformation aux données de couleur de l'image, entraînant une conversion en niveaux de gris.
<code class="language-csharp">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); // ... (Drawing code using attributes to apply the ColorMatrix) ... }</code>
Cela utilise une pondération de luminance standard (.3, .59, .11) pour une conversion d'échelle de gris perceptuellement précise. Pensez à remplacer la section commentée par le code approprié pour dessiner l'image en utilisant le ImageAttributes
modifié. Cette méthode est bien plus efficace que la manipulation pixel par pixel, en particulier pour les images plus grandes.
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!