任何PixelFormat都可以与任何ImageFormat一起使用吗?
我正在使用System.Drawing.Bitmap进行一些图像处理。当我创建Bitmap时,我被要求使用PixelFormat;当我保存位图时,我被要求提供一个ImageFormat。这里有无效的组合吗?
为了帮助回答,这里是PixelFormats和ImageFormats的列表:
PixelFormats(MSDN - System.Drawing.PixelFormat):
Gdi*
Alpha*
PAlpha*
Extended*
Canonical*
Undefined*
DontCare*
Max*
Format1bppIndexed
Format4bppIndexed
Format8bppIndexed
Format16bppGrayScale**
Format16bppRgb555
Format16bppRgb565
Format16bppArgb1555
Format24bppRgb
Format32bppRgb
Format32bppArgb
Format32bppPArgb
Format48bppRgb
Format64bppArgb
Format64bppPArgb
* - 传递给新的Bitmap()时导致ArgumentException ** - 不适用于任何ImageFormat
ImageFormats(MSDN - System.Drawing.ImageFormat):
Bmp
Emf
Exif
Gif
Icon
Jpeg
MemoryBmp
Png
Tiff
Wmf
编辑1 : 使用PixelFormats更新了PixelFormat列表,在创建位图时会导致异常。
编辑2 : 通过我自己的一些测试,似乎PixelFormat“ Format16bppGrayScale ”与所有ImageFormats不兼容。仍在寻找其他不兼容性......
编辑3 : 在我看来,对于支持透明度的ImageFormats使用“Format32bppArgb”,对于不能很好地运行的格式使用“Format24bppRgb”。