繁体   English   中英

在 C# 中显示非常大的 1bpp 位图

[英]display very large 1bpp bitmap in C#

我正在将二进制文件作为 1bpp 位图加载到图像框(我的图像框具有缩放和平移图像的能力,继承了 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 的文件。 显然我无法一次将所有文件加载到内存中,我必须加载需要在图像框上显示的部分文件。 我想知道是否有工具/方法可以缓解我的问题?

您可以考虑使用 Deep Zoom 技术。 这里有说明https://msdn.microsoft.com/en-us/library/cc645077(v=vs.95).aspx

Deep Zoom 的要点是非常大的图像文件可以分解成许多比原始图像小得多的“图块”。 使用 Deep Zoom 的客户端将只加载显示原始图像的任何部分所需的图块,类似于谷歌地图的工作方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM