位图大于原始图像

时间:2014-06-08 00:13:23

标签: c# image memory bitmap size

我在内存中加载了一个位图,在我看来,它比磁盘中的原始图像大小消耗更多的内存。

原始图像为16bpp,因此512x512的图像约为512K。当我使用位图类将其加载到内存中时,它会将图像转换为32bpp,因此它会: 512X512X4 = 1MB而不是我期望的常规512K。

有没有办法只存储原始大小的图像?

谢谢,

编辑: 这是我正在使用的代码:

 System.Drawing.Image MyImage = new Bitmap(img.RenderImage(0)); //img is a DicomFile and the RenderImage Method returns a System.Drawing.Image

内存中的MyImage大小几乎是磁盘中原始图像大小的两倍。

RenderImage方法在这里: https://github.com/rcd/fo-dicom/blob/master/DICOM/Imaging/Render/ImageGraphic.cs

1 个答案:

答案 0 :(得分:1)

注意:这是问题更新之前的答案。我把它留在这里是因为我觉得它增加了价值。如果社区认为不然,我会将其删除。


Bitmap类有constructor,其中包含PixelFormat个参数。

加载/保存图像时,请使用与输入格式匹配的PixelFormat.Format16bpp**值。有关快速参考,请参阅以下相关格式:

Format16bppArgb155:颜色信息指定32,768种颜色,其中5位为红色,5位为绿色,5位为蓝色,1位为alpha。

Format16bppGrayScale:颜色信息指定65536个灰色阴影。

Format16bppRgb555:每个5位用于红色,绿色和蓝色组件。剩余的位未使用。

Format16bppRgb565:5位用于红色分量,6位用于绿色分量,5位用于蓝色分量。