【问题标题】:Outofmemory exception when converting picture to byte array将图片转换为字节数组时出现内存不足异常
【发布时间】:2014-01-20 16:34:54
【问题描述】:

我正在使用 Windows Phone,我需要将手机中的图像转换为字节数组,但问题是 VisualStudio 抛出了 OutOfMemory 异常。

有什么办法可以避免这个错误吗?还是另一种方式?

public static byte[] GetBytes(Picture p)
{
    byte[] buffer=new byte[p.GetImage().Length];
    p.GetImage().Read(buffer, 0, buffer.Length);
    return buffer;
}

【问题讨论】:

  • 是的。不要加载这么大的图像。也许您可以流式传输图像,而不是一步将其加载到内存中。
  • 您可以将图像以块的形式传递给字节数组,而不是一次全部传递,也许它会有所帮助。您是从文件夹加载图片吗?还是只存在于记忆中?
  • 图片位于文件夹中
  • 我尝试使用块发送图像,但现在我不知道流发送的字节数超过图像总数会发生什么:S

标签: c# image windows-phone-8 stream out-of-memory


【解决方案1】:

图像对于内存来说太大了。使用System.IO 中的Stream 流式传输并保存它。这是最有效的。

【讨论】:

    【解决方案2】:

    你需要使用 MemoryStream 如:

    public byte[] imageToByteArray(System.Drawing.Image imageIn)
    {
     MemoryStream ms = new MemoryStream();
     imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
     return  ms.ToArray();
    }
    

    How to convert image in byte array

    【讨论】:

      【解决方案3】:

      好的,我找到了另一种上传图片的方法,现在它不会抛出异常。我决定按块上传文件,就像 Steven Mills 一样。我要感谢大家的帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-25
        • 2017-04-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-17
        • 2011-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多