CF 2.0SP2 中新的位图 OutOfMemoryException

发布于 2024-08-09 03:42:12 字数 498 浏览 3 评论 0原文

我有这样的代码:

if (archivoBinario != null)
{
    MemoryStream ms = new MemoryStream(archivoBinario);
    Bitmap imagen = new Bitmap(ms);
    PicBoxImagen.Image = imagen;
}

当从 MemoryStream ms 创建一个新的位图时,它会抛出 System.OutOfMemoryException 。

注意:archivoBinario 是一个字节数组,其大小为 9778 字节。

我认为内存大小不是问题。有什么建议吗?

图像由 WCF 服务发送到设备并存储在 SQL Server CE 3.1 数据库中。也许在发送图像时会出现问题。

我比较了代表存储在 SQL Server 2005 中的图像和存储在 SQL Server CE 中的图像的字节,它们是相同的。

谢谢你!

I have this code:

if (archivoBinario != null)
{
    MemoryStream ms = new MemoryStream(archivoBinario);
    Bitmap imagen = new Bitmap(ms);
    PicBoxImagen.Image = imagen;
}

It throws a System.OutOfMemoryException when a create a new Bitmap from MemoryStream ms.

Note: archivoBinario is a byte array witch its size is 9778 bytes.

I think the size on memory it's not the problem. Any advice?

The images are sent to the device by a WCF service and stored in a SQL Server CE 3.1 database. Maybe it can occur a problem while sending image.

I have compare the bytes representing the image stored in SQL Server 2005 and the image stored in SQL Server CE and are the same.

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

深海夜未眠 2024-08-16 03:42:12

Image 类几乎任何情况都会抛出 OOM,包括无效格式。要检查您的基础,请确保它是有效的图像。将这 9778 字节保存到文件中并尝试查看它(在 CF 和/或普通 PC 上)。

但 9 kB 的压缩图像可能会发生巨大的爆炸,因此它仍然可能是真正的 OOM。

The Image class throws OOM for just about anything, including invalid format. To check your bases, Make sure it is a valid Image. Save those 9778 bytes to a file and try to view it (on CF and/or a normal PC).

But it is possible for a 9 kB compressed image to blow up enormously so it still could be a genuine OOM.

等待圉鍢 2024-08-16 03:42:12

如果在分配新图像之前 PicBoxImagen.Image 不为 null,则您必须对 PicBoxImagen.Image 调用 Dispose。如果你不这样做,你就有泄漏。有关原因的更详细说明,请参阅此博客文章 ..

You must call Dispose on PicBoxImagen.Image if it is not null before assigning a new image. If you don't you have a leak. See this blog entry for a more detailed explanation as to why..

感悟人生的甜 2024-08-16 03:42:12

创建图像有时会针对内存以外的资源抛出 OutOfMemoryException(这很令人困惑)。

是否有可能您还没有处理过 Windows 窗体句柄?

另一种可能性是您确实内存不足 - 例如,一个小文件仍然可以代表一张巨大的图片(例如,如果它都是一种颜色)。如果 Windows 尝试创建图像的内存中逐像素表示形式,则可能会显示相同的症状。图片的像素大小是多少?

Creating an image will sometimes throw an OutOfMemoryException for resources other than memory (confusingly enough).

Is it possible that you haven't been disposing of Windows Forms handles?

The other possibility is that you really are short on memory - for example, a small file could still represent an enormous picture (e.g. if it's all one colour). If Windows is trying to create an in-memory pixel-by-pixel representation of the image, that could display the same symptoms. What size is the picture in terms of pixels?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文