<%@ WebHandler Language=
"C#" Class=
"ImageWater" %>
using System;
using System.Web;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
public class ImageWater : IHttpHandler
{
private string imagepath =
"~/ImageFiles/";
//图片所在的文件夹
private const string waterimage =
"~/ImageFiles/kg.png";
//水印图片
private const string defaultimage =
"~/ImageFiles/noperson.jpg";
//没有找到图片时显示的图片
private const float alpha =
0.5F;
//透明度
public void ProcessRequest(HttpContext context)
{
imagepath += context.Request.QueryString[
"title"];
//获得图片名称
Image image;
//图片类
if (File.Exists(context.Server.MapPath(imagepath)))
{
if (Path.GetExtension(context.Server.MapPath(imagepath)).ToLower() ==
".gif")
{
//生成的高质量图片名称
//string strGoodFile = context.Request.MapPath(imagepath).Substring(0, context.Request.MapPath(imagepath).LastIndexOf(".")) + ".jpg";
//从文件取得图片对象
image =
Image.FromFile(context.Server.MapPath(imagepath));
//取得图片大小
Size size =
new Size(
380,
380);
//新建一个bmp图片
Image bitmap =
new System.Drawing.Bitmap(size.Width, size.Height);
//新建一个画板
Graphics g =
System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode =
System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode =
System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空一下画布
g.Clear(Color.Blue);
//在指定位置画图
g.DrawImage(image,
new System.Drawing.Rectangle(
0,
0, bitmap.Width, bitmap.Height),
new System.Drawing.Rectangle(
0,
0, image.Width, image.Height),
GraphicsUnit.Pixel);
///文字水印
Graphics G =
System.Drawing.Graphics.FromImage(bitmap);
Font f =
new Font(
"宋体",
10);
Brush b =
new SolidBrush(Color.Black);
G.DrawString("", f, b,
10,
10);
G.Dispose();
///图片水印
Image copyImage =
Image.FromFile(context.Server.MapPath(waterimage));
//关于透明度(使用颜色矩阵)
float[][] nArray ={
new float[] {
1,
0,
0,
0,
0},
new float[] {
0,
1,
0,
0,
0},
new float[] {
0,
0,
1,
0,
0},
new float[] {
0,
0,
0,alpha ,
0},
new float[] {
0,
0,
0,
0,
1}};
ColorMatrix colormatrix =
new ColorMatrix(nArray);
ImageAttributes attributes =
new ImageAttributes();
attributes.SetColorMatrix(colormatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
Graphics a =
Graphics.FromImage(bitmap);
a.DrawImage(copyImage, new Rectangle(bitmap.Width - copyImage.Width, bitmap.Height -
copyImage.Height, copyImage.Width, copyImage.Height),
0,
0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel, attributes);
copyImage.Dispose();
a.Dispose();
copyImage.Dispose();
//保存高清晰度的缩略图
context.Response.ContentType =
"image/jpeg";
//输出图片的类型
//bitmap.Save(strGoodFile, ImageFormat.Jpeg);
bitmap.Save(context.Response.OutputStream, ImageFormat.Jpeg);
//将图片存入输出流
g.Dispose();
context.Response.End();
}
else
{
image = Image.FromFile(context.Server.MapPath(imagepath));
//将图片内容放到image对象
Graphics g = Graphics.FromImage(image);
//获得Graphics 对象
Image watermark = Image.FromFile(context.Server.MapPath(waterimage));
//将水印图片放入watermark 对象
//关于透明度(使用颜色矩阵)
float[][] nArray ={
new float[] {
1,
0,
0,
0,
0},
new float[] {
0,
1,
0,
0,
0},
new float[] {
0,
0,
1,
0,
0},
new float[] {
0,
0,
0,alpha ,
0},
new float[] {
0,
0,
0,
0,
1}};
ColorMatrix colormatrix =
new ColorMatrix(nArray);
ImageAttributes attributes =
new ImageAttributes();
attributes.SetColorMatrix(colormatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
g.DrawImage(watermark, new Rectangle(image.Width - watermark.Width, image.Height -
watermark.Height,
watermark.Width, watermark.Height), 0,
0, watermark.Width, watermark.Height, GraphicsUnit.Pixel, attributes);
//在图片指定坐标处放入一个矩形图片内容为水印图片
g.Dispose();
watermark.Dispose();
context.Response.ContentType =
"image/jpeg";
//输出图片的类型
image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
//将图片存入输出流
image.Dispose();
context.Response.End();
}
}
else
{
image = Image.FromFile(context.Server.MapPath(defaultimage));
//如果不存在图片就输出defaultimage。
context.Response.ContentType =
"image/jpeg";
//输出图片的类型
image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
//将图片存入输出流
image.Dispose();
context.Response.End();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
转载于:https://www.cnblogs.com/daixingqing/archive/2012/11/13/2768373.html
相关资源:FastReport5 破解版,去除打印水印