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