C#图片加水印(Generate Watermark Picture)
C#图片加水印(Generate Watermark Picture)
效果图如下:
C#源码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
namespace CSFramework.BLL
{
public class WatermarkImage
{
/// <summary>
/// 在图片上添加水印文字
/// </summary>
/// <param name="sourcePicture">源图片文件</param>
/// <param name="waterWords">需要添加到图片上的文字</param>
/// <param name="webName">网站名称</param>
/// <param name="alpha">透明度</param>
/// <returns></returns>
public string DrawWords(string sourcePicture, string waterWords, string webName, float alpha)
{
// 判断参数是否有效
if (sourcePicture == string.Empty || waterWords == string.Empty || alpha == 0.0)
{
return sourcePicture;
}
string PicturePath = Path.GetDirectoryName(sourcePicture) "\\";
string fileExtension = System.IO.Path.GetExtension(sourcePicture).ToLower();
// 判断文件是否存在,以及文件名是否正确
if (System.IO.File.Exists(sourcePicture) == false || (
fileExtension != ".gif" &&&
fileExtension != ".jpg" &
fileExtension != ".png"))
{
return sourcePicture;
}
//创建一个图片对象用来装载要被添加水印的图片
Image imgPhoto = Image.FromFile(sourcePicture);
//获取图片的宽和高
int phWidth = imgPhoto.Width;
int phHeight = imgPhoto.Height;
//建立一个bitmap,和我们需要加水印的图片一样大小
Bitmap bmPhoto = new Bitmap(phWidth, phHeight, PixelFormat.Format24bppRgb);
//SetResolution:设置此 Bitmap 的分辨率
//这里直接将我们需要添加水印的图片的分辨率赋给了bitmap
bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution);
//Graphics:封装一个 GDI 绘图图面。
Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.SmoothingMode = SmoothingMode.AntiAlias;//设置图形的品质
//将我们要添加水印的图片按照原始大小描绘(复制)到图形中
grPhoto.DrawImage(
imgPhoto, // 要添加水印的图片
new Rectangle(0, 0, phWidth, phHeight), // 根据要添加的水印图片的宽和高
0, // X方向从0点开始描绘
0, // Y方向
phWidth, // X方向描绘长度
phHeight, // Y方向描绘长度
GraphicsUnit.Pixel); // 描绘的单位,这里用的是像素
int m_alpha = Convert.ToInt32(256 * alpha);
SolidBrush alphaBrush = new SolidBrush(Color.FromArgb(m_alpha, 175, 175, 175)); //设置画笔透明度及颜色
DrawMainWords(imgPhoto, grPhoto, alphaBrush, waterWords);
DrawWebTitleWords(imgPhoto, grPhoto, alphaBrush, webName);
imgPhoto.Dispose();
imgPhoto = bmPhoto;//重新设置引用
grPhoto.Dispose();
// 目标图片名称及全路径
string targetImage = Path.GetDirectoryName(sourcePicture) "\\" DateTime.Now.ToString("yyyyMMddhhmmss") ".png";
//将grPhoto保存
imgPhoto.Save(targetImage, ImageFormat.Png);
imgPhoto.Dispose();
File.Delete(sourcePicture);//删除旧的图片
File.Move(targetImage, sourcePicture);//文件改名
return targetImage.Replace(PicturePath, "");
}
private void DrawWebTitleWords(Image imgPhoto, Graphics g, SolidBrush alphaBrush, string waterWords)
{
Font font = new Font("黑体", 12, FontStyle.Bold);
SolidBrush brush = new SolidBrush(Color.FromArgb(Convert.ToInt32(0.3 * 256), 175, 175, 175)); //设置画笔透明度及颜色
g.DrawString(waterWords, font, brush, imgPhoto.Width / 2 - 30, 40); //绘制文字
}
private void DrawMainWords(Image imgPhoto, Graphics g, SolidBrush alphaBrush, string waterWords)
{
//**********绘制倾斜文字**************
Font font = new Font("Verdana", 26, FontStyle.Bold);
SizeF size = g.MeasureString(waterWords, font);
Single posX = 10;
Single posY = Convert.ToSingle(imgPhoto.Height * 0.8); //高度位置80%处
g.TranslateTransform(posX, posY);
Matrix transform = g.Transform;
//float shearX = -0.230F; //右倾斜文字
float shearX = 0.50F; //左倾斜文字
float shearY = -0.50F;
transform.Shear(shearX, shearY);
g.Transform = transform;
g.DrawString(waterWords, font, alphaBrush, 0, 0); //绘制文字
}
}
}
// 来源:www.CSFramework.com, C/S结构框架学习网
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
namespace CSFramework.BLL
{
public class WatermarkImage
{
/// <summary>
/// 在图片上添加水印文字
/// </summary>
/// <param name="sourcePicture">源图片文件</param>
/// <param name="waterWords">需要添加到图片上的文字</param>
/// <param name="webName">网站名称</param>
/// <param name="alpha">透明度</param>
/// <returns></returns>
public string DrawWords(string sourcePicture, string waterWords, string webName, float alpha)
{
// 判断参数是否有效
if (sourcePicture == string.Empty || waterWords == string.Empty || alpha == 0.0)
{
return sourcePicture;
}
string PicturePath = Path.GetDirectoryName(sourcePicture) "\\";
string fileExtension = System.IO.Path.GetExtension(sourcePicture).ToLower();
// 判断文件是否存在,以及文件名是否正确
if (System.IO.File.Exists(sourcePicture) == false || (
fileExtension != ".gif" &&&
fileExtension != ".jpg" &
fileExtension != ".png"))
{
return sourcePicture;
}
//创建一个图片对象用来装载要被添加水印的图片
Image imgPhoto = Image.FromFile(sourcePicture);
//获取图片的宽和高
int phWidth = imgPhoto.Width;
int phHeight = imgPhoto.Height;
//建立一个bitmap,和我们需要加水印的图片一样大小
Bitmap bmPhoto = new Bitmap(phWidth, phHeight, PixelFormat.Format24bppRgb);
//SetResolution:设置此 Bitmap 的分辨率
//这里直接将我们需要添加水印的图片的分辨率赋给了bitmap
bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution);
//Graphics:封装一个 GDI 绘图图面。
Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.SmoothingMode = SmoothingMode.AntiAlias;//设置图形的品质
//将我们要添加水印的图片按照原始大小描绘(复制)到图形中
grPhoto.DrawImage(
imgPhoto, // 要添加水印的图片
new Rectangle(0, 0, phWidth, phHeight), // 根据要添加的水印图片的宽和高
0, // X方向从0点开始描绘
0, // Y方向
phWidth, // X方向描绘长度
phHeight, // Y方向描绘长度
GraphicsUnit.Pixel); // 描绘的单位,这里用的是像素
int m_alpha = Convert.ToInt32(256 * alpha);
SolidBrush alphaBrush = new SolidBrush(Color.FromArgb(m_alpha, 175, 175, 175)); //设置画笔透明度及颜色
DrawMainWords(imgPhoto, grPhoto, alphaBrush, waterWords);
DrawWebTitleWords(imgPhoto, grPhoto, alphaBrush, webName);
imgPhoto.Dispose();
imgPhoto = bmPhoto;//重新设置引用
grPhoto.Dispose();
// 目标图片名称及全路径
string targetImage = Path.GetDirectoryName(sourcePicture) "\\" DateTime.Now.ToString("yyyyMMddhhmmss") ".png";
//将grPhoto保存
imgPhoto.Save(targetImage, ImageFormat.Png);
imgPhoto.Dispose();
File.Delete(sourcePicture);//删除旧的图片
File.Move(targetImage, sourcePicture);//文件改名
return targetImage.Replace(PicturePath, "");
}
private void DrawWebTitleWords(Image imgPhoto, Graphics g, SolidBrush alphaBrush, string waterWords)
{
Font font = new Font("黑体", 12, FontStyle.Bold);
SolidBrush brush = new SolidBrush(Color.FromArgb(Convert.ToInt32(0.3 * 256), 175, 175, 175)); //设置画笔透明度及颜色
g.DrawString(waterWords, font, brush, imgPhoto.Width / 2 - 30, 40); //绘制文字
}
private void DrawMainWords(Image imgPhoto, Graphics g, SolidBrush alphaBrush, string waterWords)
{
//**********绘制倾斜文字**************
Font font = new Font("Verdana", 26, FontStyle.Bold);
SizeF size = g.MeasureString(waterWords, font);
Single posX = 10;
Single posY = Convert.ToSingle(imgPhoto.Height * 0.8); //高度位置80%处
g.TranslateTransform(posX, posY);
Matrix transform = g.Transform;
//float shearX = -0.230F; //右倾斜文字
float shearX = 0.50F; //左倾斜文字
float shearY = -0.50F;
transform.Shear(shearX, shearY);
g.Transform = transform;
g.DrawString(waterWords, font, alphaBrush, 0, 0); //绘制文字
}
}
}
// 来源:www.CSFramework.com, C/S结构框架学习网

参考文档:
PictureTip 类 | 图标显示 ToolTipController 超级提示|C/S开发框架
DevExpress开发技巧高级篇:双击RepositoryItemPictureEdit组件自动弹出菜单
C# Dev GridView表格使用RepositoryItemPictureEdit显示图标或图片
SQL命令生成器:GenerateSqlCmdByTableFields,GenerateSqlCmdByObjectClass
C# PictureBox设置背景图片及加载图片源码
C#在PictureBox控件上绘制透明背景文字.
类模型生成器子系统(Class Generate System)
Winform开发框架集成微信、支付宝在线支付功能|C/S开发框架
软件开发与设计 - CRM-客户关系管理系统-猫扑网络CRM客户关系管理系统 3.0
C#.NET iTextSharp生成PDF文件源码大全(生成表格、透明水印,页脚页眉页码等)
生成校验文字图片,如网页上的登录校验码(类:SubmitCoder)
Asp.Net FileUpload类实现上传文件(C/S框架网开源)
达梦数据库入门基础|C/S框架网|C/S开发框架
CSFrameworkV6旗舰版 | Oracle数据库笔记|C/S开发框架
使用.NET8/EFCore访问达梦数据库|C/S框架网|C/S开发框架
达梦数据库.NETCore.NET8实践指南|C/S软件开发框架|C/S开发框架
PictureTip 类 | 图标显示 ToolTipController 超级提示|C/S开发框架
DevExpress开发技巧高级篇:双击RepositoryItemPictureEdit组件自动弹出菜单
C# Dev GridView表格使用RepositoryItemPictureEdit显示图标或图片
SQL命令生成器:GenerateSqlCmdByTableFields,GenerateSqlCmdByObjectClass
C# PictureBox设置背景图片及加载图片源码
C#在PictureBox控件上绘制透明背景文字.
类模型生成器子系统(Class Generate System)
Winform开发框架集成微信、支付宝在线支付功能|C/S开发框架
软件开发与设计 - CRM-客户关系管理系统-猫扑网络CRM客户关系管理系统 3.0
C#.NET iTextSharp生成PDF文件源码大全(生成表格、透明水印,页脚页眉页码等)
生成校验文字图片,如网页上的登录校验码(类:SubmitCoder)
Asp.Net FileUpload类实现上传文件(C/S框架网开源)
达梦数据库入门基础|C/S框架网|C/S开发框架
CSFrameworkV6旗舰版 | Oracle数据库笔记|C/S开发框架
使用.NET8/EFCore访问达梦数据库|C/S框架网|C/S开发框架
达梦数据库.NETCore.NET8实践指南|C/S软件开发框架|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
