C# 获取图片

发布时间:2009年06月04日      浏览次数:488 次
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.IO;
using System.Drawing;
using System.Web;
public class Handler : IHttpHandler {
public void ProcessRequest(HttpContext context)
{
// 设置响应设置
context.Response.ContentType = "image/jpeg";
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.BufferOutput = false;
// 设置 PhotoID 参数
string fileName = string.Empty;
Stream stream = null;
const int buffersize = 1024 * 16;
if (context.Request.QueryString["fileName"] != null && context.Request.QueryString["fileName"] != "")
{
fileName = context.Request.QueryString["fileName"];
try
{
Bitmap bmp = null;
// 设置 Size 参数
switch (context.Request.QueryString["Size"])
{
case "S":
bmp = commOther.getMicroImage(fileName);
break;
default:
bmp = commOther.getImage(fileName);
break;
}
//加图片水印
//System.Drawing.Image image = System.Drawing.Image.FromFile(context.Server.MapPath("~/" + path + "/" + fileName));
//if (path == "LargeCover")
//{
// System.Drawing.Image copyImage = System.Drawing.Image.FromFile(context.Server.MapPath("~/images/waterMark.png"));
// Graphics g = Graphics.FromImage(image);
// g.DrawImage(copyImage, new Rectangle(0, (image.Height - copyImage.Height) * 2 / 3, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
// g.Dispose();
//}
//image.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
context.Response.Flush();
context.Response.End();
return;
}
catch
{
}
}
// 从数据库获取照片,如果未返回照片,将获取默认的“placeholder”照片
if (stream == null) stream = new FileStream(context.Server.MapPath("~/images/noPic.jpg"), FileMode.Open, FileAccess.Read, FileShare.Read);
// 将图像流写入响应流中
byte[] buffer = new byte[buffersize];
int count = stream.Read(buffer, 0, buffersize);
while (count > 0)
{
context.Response.OutputStream.Write(buffer, 0, count);
count = stream.Read(buffer, 0, buffersize);
}
}

public bool IsReusable {
get {
return false;
}
}
}
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!