bpp = 每像素位数,因此 32bpp 表示 R/G/B/A 为 8/8/8/8。
就像 .NET 对这些“System.Drawing.Imaging.PixelFormat”有一个枚举。
现在,一旦我有了包含我的图形的位图或图像对象,我将如何将它保存到一个文件/我将采用什么格式有什么用?
什么图像文件格式 (JPEG/GIF/PNG) 支持低位深度,如 16bpp 或 8bpp (而不是通常的 32bpp 或 24bpp)
最佳答案
我不认为其他人的回答测试了他们的代码,因为 GDI+ PNG 不支持 Encoder.BitDepth EncoderParameter。事实上,唯一的编解码器是 TIFF。
您需要在保存之前更改图像的 PixelFormat 才能对输出产生任何影响。这不会总是产生您期望的 PixelFormat。参见 my post here有关 PixelFormats 变成什么的更多信息。
对于 PixelFormat 转换,类似下面的方法会起作用:
private Bitmap ChangePixelFormat(Bitmap inputImage, PixelFormat newFormat)
{
Bitmap bmp = new Bitmap(inputImage.Width, inputImage.Height, newFormat);
using (Graphics g = Graphics.FromImage(bmp))
{
g.DrawImage(inputImage, 0, 0);
}
return bmp;
}
不幸的是,这些转换会产生一些非常糟糕的输出。在执行有损转换(从高位深度到低位深度)的情况下尤其如此。
关于c# - 生成低位深度的图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/483014/