首页 > 编程语言 >c# asp.net 给一个图片打上水印,并且上传

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

时间:2023-04-27 17:07:39浏览次数:36  
标签:asp c# System drawedImage ImageFormat new using net imageType


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 { ;}
		}
	}
}




黑色头发:http://heisetoufa.iteye.com/


标签:asp,c#,System,drawedImage,ImageFormat,new,using,net,imageType
From: https://blog.51cto.com/u_2543512/6231808

相关文章