1

我使用了很棒的 ImageResizing 组件,在尝试上传和读取大小约为 100MB 的图像时遇到“内存不足”错误。它可能看起来很大,但我们是一台打印机,所以很多人确实需要提供这种尺寸的图像。

失败的代码行是:

ImageResizer.ImageBuilder.Current.Build(Server.MapPath(strImagePath), Server.MapPath(strThumbPath), new ResizeSettings("maxheight=" + "150"+ "&maxwidth=" + "238"));

这可能是 GDI 本身失败了,但是除了检测发生的错误并让用户知道之外,还有其他解决方法吗?

提前感谢艾尔

4

2 回答 2

4

一个 100MB 的 jpeg 通常以位图形式解压缩到大约 8 GB。让它工作的唯一机会是获得 16 GB 的 RAM 并以 64 位模式运行该进程。

或者,您可以尝试libvips - 它是为巨大的图像文件设计的。目前还没有 .NET 包装器,但我真的很想制作一个并进行一些 ImageResizer 集成!当然,如果没有人有兴趣资助它,它可能暂时不会发生......

于 2012-09-11T18:14:10.157 回答
1

正如Lilith River所提到的,libvips 能够以低内存需求调整大图像的大小。幸运的是,现在有一个完整的用于 .NET的libvips绑定: https ://github.com/kleisauke/net-vips/ 。

它应该能够毫无问题地处理 100MB 的 jpeg 文件。

于 2019-01-22T22:08:02.617 回答