使用位图调整大图像大小的OutOfMemoryException

majing

我想调整网站中图像的大小,但是当我使用Bitmap加载14032 * 19864(png扩展名)的图像时,OutOfMemoryException会抛出。我的编译器配置为any cpu我怀疑运行环境是否合适x64代码如下:

public ActionResult BimDWGViewer()
{
    Viewer.Uri uri = null;
    string url = Request.Params["u"];
    uri = new Viewer.Uri("image@"+url);
    int width = Int32.Parse(Request.Params["w"]);
    int height = Int32.Parse(Request.Params["h"]);
    Nebula.Nexus.Helpers.ModelUriTranslator.TranslateUri(uri);
    if (uri.IsFileProtocol)
    {
        string path = uri.Path;
        System.Drawing.Bitmap image_source = new System.Drawing.Bitmap(path);
        System.Drawing.Bitmap image_result = new System.Drawing.Bitmap(width,height);
        using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image_result))
        {
            g.DrawImage(image_source, new System.Drawing.Rectangle(0, 0, width, height), new System.Drawing.Rectangle(0, 0, image_source.Width, image_source.Height), System.Drawing.GraphicsUnit.Pixel);
        }
        MemoryStream output = new MemoryStream();
        image_result.Save(output, System.Drawing.Imaging.ImageFormat.Png);
        byte[] res = output.ToArray();
        output.Dispose();
        image_source.Dispose();
        image_result.Dispose();
        return new FileContentResult(res, "image/png");
    }

}

例外发生在

System.Drawing.Bitmap image_source = new System.Drawing.Bitmap(path);
马克·沃特曼

确保在配置文件中将gcAllowVeryLargeObjects元素设置为true

.NET中的单个分配最大为2 GB(即使在作为64位进程运行时也是如此),并且很有可能您正在使用的一个类在内部做一些事情达到了这一限制。这是一个非常普遍的问题,修复您的配置文件应该可以解决这个问题。

更新:根据以下评论,@ majing遇到的问题是Visual Studio在32位版本的IIS Express中启动了他的Web应用程序。将VS配置为以64位进程启动IIS可解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何调整位图图像的大小:Android

来自分类Dev

仅调整大图像的大小

来自分类Dev

使用CSS调整所有大图像的大小

来自分类Dev

使用ARM NEON将8位图像大小调整为4

来自分类Dev

C#裁剪并调整大图像的大小

来自分类Dev

Wordpress-调整大图像的大小失败

来自分类Dev

调整大小和拆分大 tif 图像

来自分类Dev

调整大小的图像未正确绘制到位图

来自分类Dev

如何在Android位图中调整图像大小?

来自分类Dev

有没有办法调整位图图像的大小?

来自分类Dev

使用mogrify(ImageMagick)调整大图像的大小,但不影响小图像

来自分类Dev

使用mogrify(ImageMagick)调整大图像的大小,但不影响小图像

来自分类Dev

使用CSS调整图像大小

来自分类Dev

使用javascript调整图像大小

来自分类Dev

使用CSS调整图像大小

来自分类Dev

使用imagemagick调整图像大小

来自分类Dev

使用Java调整图像大小

来自分类Dev

使用CSS调整图像大小

来自分类Dev

使用 javascript 调整图像大小

来自分类Dev

渲染前使用ABCPdf调整页面大小(pdf中的大图像)

来自分类Dev

在 xml 中调整位图的大小

来自分类Dev

Android Volley将自动调整大图像的大小(子样本)

来自分类Dev

调整浏览器大小时大图像会移动

来自分类Dev

调整浏览器大小时,大图像会移动

来自分类Dev

如何将我的位图调整为16 * 16大小或32 * 32

来自分类Dev

使用PHP直接从URL调整图像大小

来自分类Dev

在Ubuntu上使用convert调整图像的大小

来自分类Dev

使用createjs / easyljs调整图像大小

来自分类Dev

使用CSS调整大小和裁剪图像