System.Drawing.Imaging.Imageformat 中的哪种格式是什么情况下的最佳选择?
我对应用程序内存消耗以及图像质量感兴趣。
在我的应用程序中,我将图像加载到内存中,其中质量不是优先考虑的,只是图像中的内容应该是可见的,哪种 Imageformat 最适合这里?
System.Drawing.Imaging.Imageformat 中的哪种格式是什么情况下的最佳选择?
我对应用程序内存消耗以及图像质量感兴趣。
在我的应用程序中,我将图像加载到内存中,其中质量不是优先考虑的,只是图像中的内容应该是可见的,哪种 Imageformat 最适合这里?
内存管理无关紧要 -ImageFormat
用于在将内存位图保存到 IO 流(例如磁盘上的文件)时控制格式。
Image
.NET 中的 s 是Bitmap
s 或 vector Metafile
。我相当确定您正在使用Bitmap
,这意味着您创建的每个实例将始终占用Stride * Height * PixelFormat
内存字节。
虽然您可以将压缩良好的 PNG 或 JPEG 图像的字节存储在内存中(可能在一个MemoryStream
或Byte[]
数组中),但您将无法对它做任何事情(例如在屏幕上显示它,修改图像的像素,等),直到它在内存中表示为光栅位图,因为这是 GDI+(即System.Drawing.*
)需要的。
(是的,有一些例外情况,例如将 JFIF 加载到内存中并操作 DCT 块 (a la jpegtran
),或者使用能够将压缩图像直接读取到显卡内存中的图形 API,例如 Direct3D 或 OpenGL(但即使那样,纹理仍将以光栅格式存在于内存中)。