我有一个16bpp的位图。我想在我的ASP.NET端以8bpp图像转换该图像。
我尝试了很多在互联网上找到的选项,但对我来说没什么用。
我也尝试过这种方式:C# Converting 32bpp image to 8bpp
但是如果我想保存文件,我会收到以下错误:
异常详细信息:System.Runtime.InteropServices.ExternalException:GDI +中发生一般错误。
Line 278: System.Drawing.Image img2 = Convert(bm_resize);//byteArrayToImage(gray);
Line 279:
Line 280: img2.Save(helper+"grey2.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
Line 281: }
Line 282:
我的问题有没有正确的方法?
完整代码:
System.Drawing.Image img2 = Convert(bm_resize);
img2.Save(path+"test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
public static System.Drawing.Image Convert(Bitmap oldbmp)
{
using (MemoryStream ms = new MemoryStream())
{
oldbmp.Save(ms, ImageFormat.Gif);
ms.Position = 0;
return System.Drawing.Image.FromStream(ms);
}
}
答案 0 :(得分:1)
答案 1 :(得分:0)
我使用一个小帮助函数在.NET中创建1 bpp单色位图。查看此链接,它也适用于8 bpp
希望这可以提供帮助!答案 2 :(得分:0)
AForge.Net有一个很好的免费(根据较小的GPL许可证)例程来进行此类更改以及更多内容。将16bpp转换为8bpp就像this一样简单。