您的位置:首页 > 编程语言 > ASP

c# asp.net 给一个图片打上水印,并且上传

2009-08-25 14:08 351 查看
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;

using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Reflection;

/// <summary>
/// FileUpload 的摘要说明
/// </summary>
public class FileUpload
{
private string BasePath;

public FileUpload()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

/// <summary>
/// 给图片上水印
/// </summary>
/// <param name="filePath">原图片地址</param>
/// <param name="waterFile">水印图片地址</param>
public void MarkWater(string filePath, string waterFile)
{
//GIF不水印
int i = filePath.LastIndexOf(".");
string ex = filePath.Substring(i, filePath.Length - i);
if (string.Compare(ex, ".gif", true) == 0)
{
return;
}

string ModifyImagePath = BasePath + filePath;//修改的图像路径
int lucencyPercent = 25;
Image modifyImage = null;
Image drawedImage = null;
Graphics g = null;
try
{
//建立图形对象
modifyImage = Image.FromFile(ModifyImagePath, true);
drawedImage = Image.FromFile(BasePath + waterFile, true);
g = Graphics.FromImage(modifyImage);
//获取要绘制图形坐标
int x = modifyImage.Width - drawedImage.Width;
int y = modifyImage.Height - drawedImage.Height;
//设置颜色矩阵
float[][] matrixItems ={
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, (float)lucencyPercent/100f, 0},
new float[] {0, 0, 0, 0, 1}};

ColorMatrix colorMatrix = new ColorMatrix(matrixItems);
ImageAttributes imgAttr = new ImageAttributes();
imgAttr.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
//绘制阴影图像
g.DrawImage(drawedImage, new Rectangle(x, y, drawedImage.Width, drawedImage.Height), 10, 10, drawedImage.Width, drawedImage.Height, GraphicsUnit.Pixel, imgAttr);
//保存文件
string[] allowImageType ={ ".jpg", ".gif", ".png", ".bmp", ".tiff", ".wmf", ".ico" };
FileInfo fi = new FileInfo(ModifyImagePath);
ImageFormat imageType = ImageFormat.Gif;
switch (fi.Extension.ToLower())
{
case ".jpg":
imageType = ImageFormat.Jpeg;
break;
case ".gif":
imageType = ImageFormat.Gif;
break;
case ".png":
imageType = ImageFormat.Png;
break;
case ".bmp":
imageType = ImageFormat.Bmp;
break;
case ".tif":
imageType = ImageFormat.Tiff;
break;
case ".wmf":
imageType = ImageFormat.Wmf;
break;
case ".ico":
imageType = ImageFormat.Icon;
break;
default:
break;
}
MemoryStream ms = new MemoryStream();
modifyImage.Save(ms, imageType);
byte[] imgData = ms.ToArray();
modifyImage.Dispose();
drawedImage.Dispose();
g.Dispose();
FileStream fs = null;
File.Delete(ModifyImagePath);
fs = new FileStream(ModifyImagePath, FileMode.Create, FileAccess.Write);
if (fs != null)
{
fs.Write(imgData, 0, imgData.Length);
fs.Close();
}
}
finally
{
try
{
drawedImage.Dispose();
modifyImage.Dispose();
g.Dispose();
}
catch { ;}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐