bpp =每像素位数,因此对于R/G/B/A,32bpp表示8/8/8/8.
像.NET有这些"System.Drawing.Imaging.PixelFormat"的枚举.
现在,一旦我的图形具有Bitmap或Image对象,我将如何将其保存为文件/我将使用哪种格式?
什么图像文件格式(JPEG/GIF/PNG)支持低位深度,如16bpp或8bpp (而不是通常的32bpp或24bpp)
我不认为对方的回答测试了他们的代码,因为GDI + PNG不支持Encoder.BitDepth EncoderParameter.事实上,唯一的Codec就是TIFF.
您需要在保存之前更改图像的PixelFormat,以便对输出产生任何影响.这并不总能产生您期望的PixelFormat.有关哪些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; }
不幸的是,这些转换会产生一些非常糟糕的输出.在执行有损转换(高位深度到较低位)的情况下尤其如此.