c# - myBitmap.RawFormat 是否与任何已知的 ImageFormat 不同?

标签 c# graphics bitmap gdi+

我正在使用 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/

相关文章:

c# - 如何将多行文本添加到 ListBox 项?

html - source-over alpha 混合效果不佳(HTML5 Canvas )

c# - 原始像素数组到灰度 BitmapImage

javascript - 图形位图填充类型错误

c# - 处理需要自动值的值类型的最佳方式?

c# - .Net OpenCV 包装器值得使用吗?

c# - 自动映射器 UseDestinationValue 不起作用

c# - 什么是NullReferenceException,如何解决?

Java - 图形 DrawImage 缩放问题

安卓 : Build a video