UserPhotoHandler

<%@ WebHandler Language="C#" Class="UserPhotoHandler" Debug="true" %>

using System;
using System.Web;
using System.Net;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

public class UserPhotoHandler : IHttpHandler 
{
    public UserPhotoHandler() { }

    Encoder myEncoder;
    ImageCodecInfo myImageCodecInfo;
    EncoderParameter myEncoderParameter;
    EncoderParameters myEncoderParameters;
    public void ProcessRequest(HttpContext context)
    {

        context.Response.ContentType = "image/jpeg";
        //string filename = context.Request.QueryString["file"].Replace("https://portal.pac.ru", "http://spoint");
        string filename = context.Request.QueryString["file"];
        myImageCodecInfo = GetEncoderInfo("image/jpeg");


        WebClient wc = new WebClient();
        
        wc.Credentials = new NetworkCredential("spfarm", "-----", "pac");
        
            
        byte[] b = wc.DownloadData(filename);
        using(MemoryStream ms = new MemoryStream(b))
        {
            using (System.Drawing.Image image = System.Drawing.Image.FromStream(ms))
            {
                myEncoder = Encoder.Quality;
                myEncoderParameters = new EncoderParameters(1);
                myEncoderParameter = new EncoderParameter(myEncoder, 100L);
                myEncoderParameters.Param[0] = myEncoderParameter;
                Bitmap result = new Bitmap(Bitmap.FromStream(ms));
                result.Save(context.Response.OutputStream, myImageCodecInfo, myEncoderParameters);//Png);
                //result.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg, myEncoderParameter);//Png);
            }
        }
        context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(86400));
        context.Response.Cache.SetCacheability(HttpCacheability.Public); 
    }

    private static ImageCodecInfo GetEncoderInfo(String mimeType)
    {
        int j;
        ImageCodecInfo[] encoders;
        encoders = ImageCodecInfo.GetImageEncoders();
        for (j = 0; j < encoders.Length; ++j)
        {
            if (encoders[j].MimeType == mimeType)
                return encoders[j];
        }
        return null;
    }
    
    public bool IsReusable
    {
        get
        {
            return true;
        }
    }
}

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *