public static Bitmap Bmp32to24(Bitmap bmp32)
{
BitmapData data32 = bmp32.LockBits(new Rectangle(0, 0, bmp32.Width, bmp32.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
Bitmap bmp24 = new Bitmap(bmp32.Width, bmp32.Height, PixelFormat.Format24bppRgb);
BitmapData data24 = bmp24.LockBits(new Rectangle(0, 0, bmp24.Width, bmp24.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);
unsafe
{
byte* ptr32 = (byte*)data32.Scan0.ToPointer();
byte* ptr24 = (byte*)data24.Scan0.ToPointer();
for (int i = 0; i < bmp24.Height; i++)
{
for (int j = 0; j < bmp24.Width; j++)
{
//将32位位图的RGB值赋值给24位位图的RGB值
*ptr24++ = *ptr32++;
*ptr24++ = *ptr32++;
*ptr24++ = *ptr32++;
ptr32++;//跳过透明度字节
}
ptr24 += data24.Stride - bmp24.Width * 3;
ptr32 += data32.Stride - bmp32.Width * 4;
}
}
bmp32.UnlockBits(data32);
bmp24.UnlockBits(data24);
return bmp24;
}
自用 C# 图片bmp32-24代码
于 2023-10-24 10:59:16 首次发布