我正在使用 GDI+ 并创建一个新的位图,如下所示:
var bmp = new Bitmap(width, height);
现在,当我观察它的 RawFormat.Guid 时,我发现它不同于所有预定义的 ImageFormat(虽然我希望它是 JPEG)。
ImageFormat.Jpeg.Guid
{b96b3cae-0728-11d3-9d7b-0000f81ef32e}
format.Guid
{b96b3caa-0728-11d3-9d7b-0000f81ef32e}
有趣的是,如您所见,除了一个字符外,它们完全相同,这让我更加困惑。
知道为什么吗?代码的哪些部分决定了我创建的位图的 RawFormat 是什么?我们如何确保它是有效的 ImageFormat?
谢谢。
最佳答案
来自 Windows SDK,<gdiplusimaging.h>
头文件:
DEFINE_GUID(ImageFormatUndefined, 0xb96b3ca9,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatMemoryBMP, 0xb96b3caa,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatBMP, 0xb96b3cab,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatEMF, 0xb96b3cac,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatWMF, 0xb96b3cad,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatJPEG, 0xb96b3cae,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatPNG, 0xb96b3caf,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatGIF, 0xb96b3cb0,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatTIFF, 0xb96b3cb1,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatEXIF, 0xb96b3cb2,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
DEFINE_GUID(ImageFormatIcon, 0xb96b3cb5,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
“内存BMP”,挺贴切的。是的,Microsoft 经常手动处理 GUID。调皮。
关于c# - myBitmap.RawFormat 是否与任何已知的 ImageFormat 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6944270/