<%@ 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;
}
}
}