Buat imej skala kelabu 16-bit dalam C#
Tukar imej kepada format skala kelabu 16-bit tanpa melaraskan komponen RGB satu demi satu, anda boleh terus menggunakan System.Drawing.Imaging.PixelFormat
penghitungan.
Buat peta bit skala kelabu
<code class="language-csharp">Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);</code>
Ini akan mencipta peta bit skala kelabu 16 bit kosong.
Tukar imej sedia ada
Untuk menukar imej warna sedia ada kepada skala kelabu, anda boleh melelang pada pikselnya dan menetapkan warna setiap piksel kepada skala kelabu, mengekstrak maklumat kecerahan daripada warna asal. (Contoh kod untuk traversal piksel dan penukaran skala kelabu ditinggalkan di sini kerana kod lengkap tidak disediakan dalam artikel asal, hanya kod untuk membuat peta bit.)
Pelan pengoptimuman
Untuk mempercepatkan penukaran skala kelabu, anda boleh menggunakan kelas ColorMatrix
untuk menggunakan transformasi skala kelabu sebelum melukis imej asal:
<code class="language-csharp">public static Bitmap MakeGrayscale3(Bitmap original) { Bitmap newBitmap = new Bitmap(original.Width, original.Height); using (Graphics g = Graphics.FromImage(newBitmap)) { 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>
Kaedah ini menggunakan ColorMatrix
untuk menukar imej kepada skala kelabu dengan cekap.
Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Imej kepada Skala Kelabu 16-bit dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!