Dar*_*ryl 5 .net system.drawing
任何 PixelFormat 都可以与任何 ImageFormat 一起使用吗?
我正在使用 System.Drawing.Bitmap 进行一些图像处理。当我创建位图时,我被要求提供 PixelFormat;当我保存位图时,我被要求提供一个 ImageFormat。这里有任何无效的组合吗?
为了帮助回答,这里是 PixelFormats 和 ImageFormats 的列表:
像素格式(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
Run Code Online (Sandbox Code Playgroud)
* - 传递给 new Bitmap() 时导致 ArgumentException
** - 不适用于任何 ImageFormat
ImageFormats ( MSDN - System.Drawing.ImageFormat ):
Bmp
Emf
Exif
Gif
Icon
Jpeg
MemoryBmp
Png
Tiff
Wmf
Run Code Online (Sandbox Code Playgroud)
编辑 1:使用 PixelFormats 更新 PixelFormat 列表,在创建位图时会导致异常。
编辑 2:通过我自己的一些测试,似乎 PixelFormat“ Format16bppGrayScale ”与所有 ImageFormats 不兼容。仍在寻找其他不兼容的...
编辑 3:在我看来,对支持透明度的 ImageFormats 使用“Format32bppArgb”,对效果不佳的格式使用“Format24bppRgb”。