烈火教程 ASP.net 为上传的图片加上一个logo图片水印,生成图片质量很高,直接看实例代码:
/// <summary>
/// 加上logo图片水印
/// </summary>
/// <param name="FilePath">源图片地址</param>
/// <param name="SavePath">图片保存路径</param>
public static void AddWaterMark(string FilePath, string SavePath)
{
Bitmap bitmap = new Bitmap(FilePath);
Graphics g = Graphics.FromImage(bitmap);
System.Drawing.Image logo = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath("~/images/top/" + ConfigurationManager.AppSettings["WaterMarkLogo"].ToString()));//加载logo图片
if (bitmap.Width < logo.Width || bitmap.Height <= logo.Height)
return;
//下面定义一个矩形区域,以后在这个矩形里画上透明背景和白色字体
float rectWidth = (float)logo.Width;
float rectHeight = (float)logo.Height;
float rectX = bitmap.Width - rectWidth;
float rectY = bitmap.Height - rectHeight;
//声明矩形域
RectangleF textArea = new RectangleF(rectX, rectY, rectWidth, rectHeight);
g.DrawImage(logo, textArea);
MemoryStream ms = new MemoryStream();
//保存为Jpg类型
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
g.Dispose();
bitmap.Dispose();
logo.Dispose();
FileStream fs = new FileStream(SavePath, FileMode.OpenOrCreate);
fs.Write(ms.ToArray(), 0, ms.ToArray().Length);
fs.Close();
}
|