C#中图片新增水印

Posted 李文平

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中图片新增水印相关的知识,希望对你有一定的参考价值。

/// <summary>
/// 在图片上生成图片水印
/// </summary>
/// <param name="Path">原服务器图片路径</param>
/// <param name="Path_syp">生成的带图片水印的图片路径</param>
/// <param name="Path_sypf">水印图片路径</param>
public static void AddWaterPic(string Path, string Path_syp, string Path_sypf,int x=0,int y=0)
{
using (Image srcImg = Image.FromFile(Path))
{
//将水印文件加载到内存中
using (Image waterMark = Image.FromFile(Path_sypf))
{
//实例化一块画布
using (Graphics g = Graphics.FromImage(srcImg))
{

if (x == 0)
{
x = (int)(((double)srcImg.Width - (double)waterMark.Width) / 2);

}
if (y == 0)
{
y = (int)(((double)srcImg.Height - ((double)waterMark.Height / 2)) / 2);
}
//写文字
//g.DrawString("17cn商城版权所有...",new Font("Microsoft Yahei",20),new SolidBrush(Color.Red),20,20);
//画图片

//按图片大小给定水印
//if (srcImg.Width > 100000000)
//{
// Path_sypf = Path_sypf.Replace("logo_1.png", "logo_1.png");
//}
//else if(srcImg.Width > 500000)
//{
// Path_sypf = Path_sypf.Replace("logo_1.png", "logo_1.png");
//}

//水印的宽度大于图片宽度时进行水印压缩
if (waterMark.Width > srcImg.Width)
{
x = 0;
int waterh = (int)((double)srcImg.Width / (double)waterMark.Width * (double)waterMark.Height);
g.DrawImage(waterMark.GetThumbnailImage(srcImg.Width,waterh , null, IntPtr.Zero), new Rectangle(x, y, waterMark.Width, waterMark.Height), 0, 0, waterMark.Width, waterMark.Height, GraphicsUnit.Pixel);
}
else
{
g.DrawImage(waterMark, new Rectangle(x, y, waterMark.Width, waterMark.Height), 0, 0, waterMark.Width, waterMark.Height, GraphicsUnit.Pixel);
}
srcImg.Save(Path_syp);
}
}

}

以上是关于C#中图片新增水印的主要内容,如果未能解决你的问题,请参考以下文章

技术分享| anyRTC 8月更新迭代

如何实现流媒体视频平台的直播水印开发?

php编程之kindeditor上传图片加水印实现

支持飞书认证和消息通知,新增会话录像水印功能,JumpServer堡垒机v2.13.0发布

发布博客支持关闭图片水印啦!CSDN产品周报第10期

发布博客支持关闭图片水印啦!CSDN产品周报第10期