我在内存中加载了一个位图,在我看来,它比磁盘中的原始图像大小消耗更多的内存。
原始图像为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
答案 0 :(得分:1)
注意:这是问题更新之前的答案。我把它留在这里是因为我觉得它增加了价值。如果社区认为不然,我会将其删除。
Bitmap
类有constructor,其中包含PixelFormat个参数。
加载/保存图像时,请使用与输入格式匹配的PixelFormat.Format16bpp**
值。有关快速参考,请参阅以下相关格式:
Format16bppArgb155
:颜色信息指定32,768种颜色,其中5位为红色,5位为绿色,5位为蓝色,1位为alpha。
Format16bppGrayScale
:颜色信息指定65536个灰色阴影。
Format16bppRgb555
:每个5位用于红色,绿色和蓝色组件。剩余的位未使用。
Format16bppRgb565
:5位用于红色分量,6位用于绿色分量,5位用于蓝色分量。