我正在使用非常棒的ImageResizing组件,并且在尝试上传和读取大小约为100MB的图像时遇到“内存不足”错误。它可能看起来很大,但我们是打印机,所以很多人确实需要提供这样大小的图像。
失败的代码行是:
ImageResizer.ImageBuilder.Current.Build(Server.MapPath(strImagePath),Server.MapPath(strThumbPath),new ResizeSettings(“maxheight =”+“150”+“& maxwidth =”+“238”));
这可能是GDI本身失败了,但除了检测到错误并让用户知道之外,还有其他解决方法吗?
提前致谢 人
答案 0 :(得分:3)
100MB jpeg通常以位图形式解压缩到大约8千兆字节。您获得该功能的唯一机会是获得16 GB的RAM并以64位模式运行该过程。
或者,您可以尝试libvips - 它专为巨大的图像文件而设计。还没有.NET包装器,但我真的想制作一个并进行一些ImageResizer集成!当然,没有任何人有兴趣资助它,它可能不会发生一段时间......
答案 1 :(得分:1)
如Lilith River所述,libvips能够调整具有低内存需求的大图像的大小。幸运的是,现在可以使用libvips来为.NET提供完整的https://github.com/kleisauke/net-vips/绑定。
它应该能够处理100MB的jpeg文件,而不会出现任何问题。