快速业务通道

ASP.NET上传图片加上文字或图片水印

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-12

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

namespace Chris
{
/// <summary>
/// 文件上传类,重载了上传,缩略图,水印
/// </summary>
public class water
{
private string BasePath;

/// <summary>
/// 无参构造,默认为程序运行根目录
/// </summary>
public water()
{
}

/// <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();
mod

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号