【发布时间】:2011-07-17 06:46:18
【问题描述】:
我正在创建一个基本的 AutoCAD 查看器,它必须处理非常大的图像。
我正在使用 System.Drawing.Graphics 通过以下方式渲染图像:
Bitmap imageData;
public void Init(string filepath)
{
imageData = new Bitmap(filepath);
}
public void Render(System.Drawing.Graphics ctx)
{
ctx.DrawImage(imageData, x, y, w, h);
}
我正在处理的一个特定文件有大约十个 8000x8000 像素的 .tif 文件。毋庸置疑,上面的内容非常适合 OutOfMemory 异常。
每个文件被压缩到几兆字节。谁能提出更好的渲染策略?
【问题讨论】:
-
我估计十个 8000x8000 像素的 .tif 文件约为2.56GB 你有多少内存?
-
@Mitch:如果我没记错的话,我在某处读到 .NET 进程的最大工作大小是 2GB,所以这个应用程序失败是很合乎逻辑的。
-
它必须在典型的客户端机器上工作,所以我不能强迫 .net 以其他方式表现不同。我正在寻找一种内存密集度较低的策略来渲染这些图像。顺便说一句,AutoCAD 查看器没有任何问题(它的渲染通常要慢很多,尽管对于其他所有内容)。
标签: c# image graphics bitmap drawing