Image.FromStream OutOfMemory异常

时间:2017-05-21 23:21:58

标签: c#

我正在尝试从MemoryStream中获取图像。在MemoryStream中我有一个很大的JPG图像(在转换为位图后,大小从38MB增加到超过1.3GB,评论为有问题)我得到一个OutOfMemory异常。使用较小的图像一切正常。怎么处理这个问题?对我来说,可接受的解决方案是调整存储在_imgArray以下1.3GB的图像。是否可以在调用Image.FromStream方法之前执行此操作?

public static Image GetImageFromByteArray(byte[] _imgArray)
{
    Image imgFromArray = null;
    MemoryStream stream = null;
    try
    {
        stream = new MemoryStream(_imgArray, 0, _imgArray.Length);
        imgFromArray = Image.FromStream(stream, true);//this line throws an Out of memory exception
    }
    catch(OutOfMemoryException)
    {
        Error.Warning("Das Bild ist zu groß!");
    }
    catch (Exception ex)
    {
        throw new FacadeException("Fehler beim Laden des Bildes.", ex);
    }
    finally
    {
        if (stream != null)
        {
            stream.Close();
        }
    }
    return imgFromArray;
}

1 个答案:

答案 0 :(得分:0)

<强>原因:

在应用程序32位(x86)上创建大于~1.3GB的对象时,将抛出OutOfMemory预期。

<强>解决方案:

尝试将您的应用程序更改为64位(x64),如下图所示:

enter image description here