Tag: 大步

如何从具有负步幅的位图复制像素数据?

我一直在寻找将Bitmap转换为8bpp的最快方法。 我发现了两种方法: 1。 public static System.Drawing.Image ConvertTo8bpp(Bitmap oldbmp) { using (var ms = new MemoryStream()) { oldbmp.Save(ms, ImageFormat.Gif); ms.Position = 0; return System.Drawing.Image.FromStream(ms); } } 2. http://www.wischik.com/lu/programmer/1bpp.html 但是: 1。结果质量很差(托盘坏) 和2给我一个负步幅的位图,当我尝试锁定位并将数据复制到字节数组时,我得到一个exception: 尝试读取或写入受保护的内存。 这通常表明其他内存已损坏。 BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat); this.stride = bmpData.Stride; this.bytesPerPixel = GetBytesPerPixel(bmp.PixelFormat); int length = bmpData.Stride * bmp.Height; if […]