You must create an image in ASP.Net through webservice

For my new asp.net application that I am developing, I would like to create an image at runtime using webservice (return bytes) and show it as an image using Javascript (so that I can have ajax functionality.

Any ideas how to do this?

Or any ideas on how I can create an image at runtime and display it on my webpage using Ajax (shouldn't be returned) without saving the image anywhere on the hard drive?

Thanks!

+3
source share
3 answers

, - ASHX querystring, . , Response.Content - /png

ASHX " " . .

ASHX.

, , JavaScript DOM / SRC.

function ChangeImage(param1, param2)
{
  var url = "http://someserver/somepage.ashx?param1=" + param1 + "&param2=" + param2;
  var image1 = document.getElementById("MyImage");
  image1.src = url;
}
+6

, ashx, .

web.config

<httpHandlers>
  <add verb="*" path="ImageGenerator.ashx" type="MyHandlers.HttpImageHandler, MyHandlers" />
</httpHandlers>

Allen Guest Blog

ImageGenerator.ashx

namespace MyHandlers
{
      public class HttpImageHandler : IHttpHandler
      {
        private string GetExtension(string url)
        {
          string extension = "";
          if (null != url)
          {
            int indexSeperator = url.LastIndexOf(".");
            if (indexSeperator > -1)
              extension = url.Substring(indexSeperator + 1, url.Length - indexSeperator - 1).ToUpper();
          }
          return extension;
        }

        private string GetContentType(string url)
        {
          switch (GetExtension(url))
          {
            case "JPG" :
            case "JPEG" :
              return "image/jpg";
            case "PNG" :
              return "image/png";
            case "GIF" :
              return "image/gif";
            default :
              return "";
          }
        }

        private ImageFormat GetImageFormat(string url)
        {
          switch (GetExtension(url))
          {
            case "JPG" :
            case "JPEG" :
              return ImageFormat.Jpeg;
            case "PNG" :
              return ImageFormat.Png;
            case "GIF" :
              return ImageFormat.Gif;
            default :
              return ImageFormat.Bmp;
          }
        }

        private Image GetImage(string url)
        {
          HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create(url);
          HttpWebResponse wRes = (HttpWebResponse)(wReq).GetResponse();
          Stream wStr = wRes.GetResponseStream();
          return Image.FromStream(wStr);
        }

        #region IHttpHandler Members
        public void ProcessRequest(HttpContext context)
        {
          string url = context.Request.QueryString["imageUrl"];
          if (null != url)
          {
            context.Response.Clear();
            context.Response.ContentType = GetContentType(url);
            Image img = GetImage(url);
            img.Save(context.Response.OutputStream, GetImageFormat(url));
          }
          context.Response.End();
        }

        public bool IsReusable
        {
          get { return false; }
        }
        #endregion
      }
}

javascript ashx, , imageUrl.

+1

- HttpHandler.

- , java script , , .

httphandler , , IHttpHandler, web.config.

, .

, img, :

<img src="yourhttphandler.ashx?id=1" />

, src:

yourimage.src = "yourhttphandler.ashx?id=2";
+1

Source: https://habr.com/ru/post/1703264/


All Articles