C# 32位Bitmap转24位Bitmap、C# 32位Bitmap转8位Bitmap、C# xx位Bitmap转任意位Bitmap……
你知道你为什么搜不到你想要的东西嘛?
是因为,太基础了。
你可能会搜到:
C# 图像处理:将图像(24位真彩)转为 8位图像,供深度学习
https://blog.csdn.net/lvyiwuhen/article/details/106117751
这个是教你转化为灰度图。
C#图片灰度处理(位深度24→位深度8)
https://www.cnblogs.com/longyi/p/4605325.html
这个也是……
其实这个并不难,主要是没有直接的方法转换。
基本的逻辑是新建画布重新画一个。
Image bmp32 = Image.FromFile(file);
Bitmap bmp24 = new Bitmap(bmp32.Width, bmp32.Height, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(bmp24);
g.DrawImage(bmp32, new Rectangle(0, 0, bmp32.Width, bmp32.Height));
bmp24.Save($"{dstPath}\\{fileName}", ImageFormat.Bmp);
按照这样的方式,其它位数同理。
发现不能使用 Format8bppIndexed ,那么一个免费的图片处理库FreeImage推荐。
C#document:https://freeimage.sourceforge.io/fnet/Index.html
FreeImage Demo:
C#中使用FreeImage库加载Bmp、JPG、PNG、PCX、TGA、PSD等25种格式的图像(源码)
https://www.cnblogs.com/Imageshop/p/3176478.html
参考来源: