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