【发布时间】:2021-06-15 11:39:55
【问题描述】:
我将二进制文件作为 1bpp 位图加载到 imagebox 中(我的图片框能够缩放和平移图像,继承了 ScrollableControl)。我对小孩子没有问题。我从文件中读取一个字节数组并将其转换为位图,如下所示:
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format1bppIndexed);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, bmp.PixelFormat);
Marshal.Copy(data, 0, bmpData.Scan0, data.Length);
bmp.UnlockBits(bmpData);
this.Image = bmp;
但是当涉及到大文件时,我的问题就开始了。我想处理大小超过 20gb 的文件。显然我不能一次将所有文件加载到内存中,我必须加载需要在图像框上显示的部分文件。我想知道有什么工具/方法可以缓解我的问题吗?
【问题讨论】:
-
像this 这样的问题?
-
即使在 4K 屏幕上显示每个像素,也只有不到 100MB。从 20GB 文件中选择要显示的像素。
-
@Tommy 这正是我希望你帮助我的。当滚动事件发生时,我需要加载部分文件并将其显示在 Imagebox 中。
-
@JeroenHeier 该问题中的问题是裁剪加载到内存中的图像。但我的问题是需要将文件的一部分加载到内存中以及何时应该发生