0

System.Drawing.Imaging.Imageformat 中的哪种格式是什么情况下的最佳选择?

我对应用程序内存消耗以及图像质量感兴趣。

在我的应用程序中,我将图像加载到内存中,其中质量不是优先考虑的,只是图像中的内容应该是可见的,哪种 Imageformat 最适合这里?

4

1 回答 1

1

内存管理无关紧要 -ImageFormat用于在将内存位图保存到 IO 流(例如磁盘上的文件)时控制格式。

Image.NET 中的 s 是Bitmaps 或 vector Metafile。我相当确定您正在使用Bitmap,这意味着您创建的每个实例将始终占用Stride * Height * PixelFormat内存字节。

虽然您可以将压缩良好的 PNG 或 JPEG 图像的字节存储在内存中(可能在一个MemoryStreamByte[]数组中),但您将无法对它做任何事情(例如在屏幕上显示它,修改图像的像素,等),直到它在内存中表示为光栅位图,因为这是 GDI+(即System.Drawing.*)需要的。

(是的,有一些例外情况,例如将 JFIF 加载到内存中并操作 DCT 块 (a la jpegtran),或者使用能够将压缩图像直接读取到显卡内存中的图形 API,例如 Direct3D 或 OpenGL(但即使那样,纹理仍将以光栅格式存在于内存中)。

于 2013-10-31T00:10:30.483 回答