【发布时间】:2017-12-28 16:49:46
【问题描述】:
我在尝试通过 C# 加载 JPG 图像时遇到了常见的 GDI+ 错误。我不确定这是否是由于此 JPG (46495px*4536px) 的高分辨率,因为加载其他低分辨率 JPG 文件可以正常工作。问题 JPG 文件大小为 4696KB。
代码:
var newImage = Image.FromFile("demo.jpg"); //issue jpg
使用 Image.FromStream() API 时也失败了:
var stream = File.OpenRead("demo.jpg");
var image = Image.FromStream(stream);
如果有人能帮忙解释一下,不胜感激
【问题讨论】:
-
您好,您收到的错误信息是什么?
-
我怀疑您遇到了 GDI+/.NET 的限制,即即使在 64 位操作系统上,GC 堆上允许的最大对象大小也是 2GB。我没有足够的知识来给出答案,但汉斯·帕桑特本人在这个问题上读了一些有趣的书:How are Bitmaps stored in memory in .NET? 和 What is the maximum resolution of C# .NET Bitmap?
-
错误消息是:“GDI+ 发生一般错误”,errorCode 是 -2147467259。
-
Visual Studio 没有提示限制或任何内存不足问题。
-
遗憾的是,实际上 GDI+ 返回的所有错误都是这样不伦不类的。