Imaging.Imageformat哪一个最适合内存管理

时间:2013-10-31 00:01:20

标签: wpf image c#-4.0 memory-management

System.Drawing.Imaging.Imageformat中的哪种格式是哪些场景的最佳选择?

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

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

1 个答案:

答案 0 :(得分:1)

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

.NET中的

ImageBitmap s或向量Metafile。我确信您正在使用Bitmap,这意味着您创建的每个实例将始终占用Stride * Height * PixelFormat个字节的内存。

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

(是的,有一些例外,例如将JFIF加载到内存中并操纵DCT块(la System.Drawing.*),或者使用能够读取压缩图像的Direct3D或OpenGL等图形API直接进入显卡的内存(但即使这样,纹理仍然会以光栅格式存储在内存中)。