C# 圖像快速轉化成byte[]和計算像素值


 public static unsafe byte[] ConvertTo8Byte(Bitmap img)
        {
            byte[] result = new byte[img.Width * img.Height];
            int n = 0;
            BitmapData data = img.LockBits(new Rectangle(0, 0, img.Width, img.Height), ImageLockMode.ReadOnly,
                                           PixelFormat.Format24bppRgb);
            var bp = (byte*)data.Scan0.ToPointer();

            for (int i = 0; i != data.Height; i++)
            {
                for (int j = 0; j != data.Width; j++)
                {
                    result[n] = bp[i * data.Stride + j * 3];
                    n++;
                    //0.3R+0.59G+0.11B
                    float value = 0.11F * bp[i * data.Stride + j * 3] + 0.59F * bp[i * data.Stride + j * 3 + 1] +
                                  0.3F * bp[i * data.Stride + j * 3 + 2];

                }
            }
            img.UnlockBits(data);
            //img.Dispose();
            return result;
            // ColorPalette palette = bit.Palette;
            //for (int i = 0; i != palette.Entries.Length; i++)
            //{
            //    palette.Entries[i] = Color.FromArgb(i, i, i);
            //}
            //bit.Palette = palette;
            //bit.Save(destFile, ImageFormat.Bmp);
            //img.Dispose();
            //bit.Dispose();
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM