在 MVC ASP.NET 中显示运行时生成的图像:ashx 与 ImageResult

发布于 2024-08-22 16:22:48 字数 1216 浏览 3 评论 0原文

我引用 ashx 文件来显示运行时生成的图像:

<img alt="" style="height: 200px; width: 450px;" 
   id="Img1" src="<%= Url.Content ("~/Helpers/GetImage.ashx?side=Front") %>" />

下面是创建图像的代码。但我担心这不是正确的方法;我应该使用返回 ImageResult 的控制器吗?

if (!string.IsNullOrEmpty(context.Request.Params["side"]))
{

    string ImageType = string.Empty;
    if (context.Request.Params["side"].Equals("Front"))
    { 
        ImageType="FrontJpegBase64";
    }
    else
    {
        ImageType = "BackJpegBase64";
    }

    Log.Info(context.Session["FrontBase64"].ToString());
    byte[] imageByteArray = System.Convert.FromBase64String(context.Session[ImageType].ToString());
    System.IO.MemoryStream imageMemoryStream = new System.IO.MemoryStream(imageByteArray);
    try
    {
        using (System.Drawing.Image img = System.Drawing.Image.FromStream(imageMemoryStream))
        {
            img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    catch (System.Exception ex)
    {
        Log.Error(ex, ": ConvertBytesToImage {0} ");
    }
    finally
    {
        imageMemoryStream.Close();
        context.Response.Flush();
    }
}

I am referencing an ashx file to show an image which is generated at runtime:

<img alt="" style="height: 200px; width: 450px;" 
   id="Img1" src="<%= Url.Content ("~/Helpers/GetImage.ashx?side=Front") %>" />

Below is the code that creates the image. But I'm concerned that this is not the right approach; should I instead use a controller that returns an ImageResult?

if (!string.IsNullOrEmpty(context.Request.Params["side"]))
{

    string ImageType = string.Empty;
    if (context.Request.Params["side"].Equals("Front"))
    { 
        ImageType="FrontJpegBase64";
    }
    else
    {
        ImageType = "BackJpegBase64";
    }

    Log.Info(context.Session["FrontBase64"].ToString());
    byte[] imageByteArray = System.Convert.FromBase64String(context.Session[ImageType].ToString());
    System.IO.MemoryStream imageMemoryStream = new System.IO.MemoryStream(imageByteArray);
    try
    {
        using (System.Drawing.Image img = System.Drawing.Image.FromStream(imageMemoryStream))
        {
            img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    catch (System.Exception ex)
    {
        Log.Error(ex, ": ConvertBytesToImage {0} ");
    }
    finally
    {
        imageMemoryStream.Close();
        context.Response.Flush();
    }
}

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

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

发布评论

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

评论(2

别再吹冷风 2024-08-29 16:22:48

ashx 比使用控制器操作快 7.23 倍。

ashx is 7.23 times faster than using controller actions.

感性不性感 2024-08-29 16:22:48

我认为通过 ashx 处理它是一个很好的方法。我在我的一些项目中使用过它,效果非常好!

I think handling it through ashx is a good approach. I have used it in some of my projects and it worked great!

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