gpt4 book ai didi

c# - 在 ASP.NET C# Web 应用程序中动态创建图像的正确方法?

转载 作者:行者123 更新时间:2023-11-30 15:09:35 25 4
gpt4 key购买 nike

我是 ASP.NET 的新手,但我已经用 C# 开发了很多 WinForms 应用程序,我在这些应用程序中广泛使用了 System.Drawing.Bitmap 命名空间,没有太多问题。

今天,我决定编写一些代码在我的 Page_Load 事件中动态创建一些 PNG,一切似乎都运行良好。但我注意到这个看起来很可怕 warning在微软文档网站上。这是怎么回事??

除了使用 System.Drawing.Bitmap 我不知道在 .Net 中处理图像的任何其他方法......我感到困惑:(

最佳答案

您在 Page_Load 事件中描述了动态生成图像,这表明您的图像是由 ASP.NET 页面提供的。如果您不提供页面服务,则无需承担实例化页面对象及其关联对象、生命周期事件等的性能开销。

生成图像的更好“或更合适”的方法是从更轻的 HttpHandler 中提供它们(但您仍然可以很好地使用 Bitmap)。实现 IHttpHandler interface你只需要实现 2 种方法,并没有太多的东西。像这样:

<%@ WebHandler Language="C#" Class="ImageHandler" %>
using System;
using System.IO;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

public class ImageHandler : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
Bitmap output = new Bitmap(path);

// Do lots of fun stuff here related to image
// manipulation and/or generation

...

context.Response.ContentType = ResponseType("Image/png");

// Send image to the browser
image.Save(context.Response.OutputStream, ImageType(path));

// Be careful to clean up; you could put this inside a 'using' block
image.Dispose();
}

public bool IsReusable
{
get { return true; }
}
}

请注意:这不是工作代码...只是一个给您一个想法的小例子。

将您的代码放入 HttpHandler 中,您将更接近卓越 50%。无论如何,它肯定会更快地为您的图像提供服务并允许您处理更多请求......而且您可以了解更多框架 ;-)

关于c# - 在 ASP.NET C# Web 应用程序中动态创建图像的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com