C#给图片加水印的简单实现方法

下面给您详细讲解“C#给图片加水印的简单实现方法”的完整攻略。

1.安装必要的开发环境

为了进行本文的演示,我们需要安装Visual Studio开发环境、.NET框架和C#语言工具。

2.新建C#控制台应用程序项目

打开Visual Studio,点击菜单栏的“文件”-“新建”-“项目”,在弹出的对话框中选择“控制台应用程序”项目,起一个项目名称并确定,然后在“程序.cs”文件中编写代码。

3.引入相关的命名空间

我们需要引入以下的命名空间:

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

4.加载原图像

首先,我们需要加载一张图片,并得到该图片的宽度和高度:

Bitmap bmp = new Bitmap("原图像的路径");
int width = bmp.Width;
int height = bmp.Height;

5.创建用于绘制文字的画刷和字体

下面我们需要创建一个用于绘制文字的画刷:

SolidBrush brush = new SolidBrush(Color.Black);

然后,我们需要创建一个字体对象:

Font font = new Font("Arial", 18);

注意字体的名称和大小可以根据实际情况进行设置。

6.绘制水印文字到图像上

在绘制水印之前,我们可以先对图片进行一些处理,比如压缩、裁剪等。接下来,我们将绘制水印文字到图片上:

Graphics graphics = Graphics.FromImage(bmp);
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.DrawString("水印文字", font, brush, new Point(width - 200, height - 50));
graphics.Save();

在这里,我们使用Graphics类的DrawString方法将水印文字绘制到图片的右下角位置,并调用Save方法将修改后的图片保存。

7.示例说明

以下是两个示例说明,分别是给多张图片添加文字水印和图片水印:

示例1:给多张图片添加文字水印

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

namespace Watermark
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] files = System.IO.Directory.GetFiles("图片目录的路径", "*.jpg");
            string savePath = "图片保存目录的路径";
            string watermarkText = "水印文字";
            Font font = new Font("微软雅黑", 18, FontStyle.Bold);
            SolidBrush brush = new SolidBrush(Color.FromArgb(128, 255, 255, 255));

            foreach (string file in files)
            {
                Image image = Image.FromFile(file);
                Graphics graphics = Graphics.FromImage(image);
                graphics.SmoothingMode = SmoothingMode.HighQuality;
                SizeF sizeF = graphics.MeasureString(watermarkText, font);
                graphics.DrawString(watermarkText, font, brush, new PointF(image.Width - sizeF.Width - 10, image.Height - sizeF.Height - 10));
                image.Save(savePath + "\\" + System.IO.Path.GetFileName(file));
            }
        }
    }
}

示例2:给多张图片添加图片水印

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

namespace Watermark
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] files = System.IO.Directory.GetFiles("图片目录的路径", "*.jpg");
            string savePath = "图片保存目录的路径";
            Random random = new Random();

            foreach (string file in files)
            {
                Image image = Image.FromFile(file);
                Image watermark = Image.FromFile(@"图片水印的路径");
                Graphics graphics = Graphics.FromImage(image);
                graphics.SmoothingMode = SmoothingMode.HighQuality;
                int x = random.Next(image.Width - watermark.Width);
                int y = random.Next(image.Height - watermark.Height);
                graphics.DrawImage(watermark, new Rectangle(x, y, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
                image.Save(savePath + "\\" + System.IO.Path.GetFileName(file));
            }
        }
    }
}

以上就是C#给图片加水印的简单实现方法的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#给图片加水印的简单实现方法 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • ASP.NET Core中间件用法与官方常用中间件介绍

    ASP.NET Core中间件用法与官方常用中间件介绍 在ASP.NET Core应用程序中,中间件是处理HTTP请求和响应的组件。本攻略将介绍ASP.NET Core中间件的用法和官方常用中间件,并提供两个示例说明。 1. 中间件用法 在ASP.NET Core应用程序中,中间件是处理HTTP请求和响应的组件。中间件可以执行以下操作: 处理HTTP请求。 …

    C# 2023年5月16日
    00
  • C# WORD操作实现代码

    下面是详细的C# WORD操作实现代码攻略。 环境准备 安装Visual Studio 安装微软官方提供的Office插件 Word操作示例 示例1:创建新的Word文档并添加内容 using Word = Microsoft.Office.Interop.Word; Word.Application wordApp = new Word.Applicati…

    C# 2023年5月15日
    00
  • 用几行C#代码实现定时关机/重启(超详细!建议新手练习)

    好的。 在C#中实现定时关机和重启可以使用System.Diagnostics.Process.Start方法来启动cmd命令行,然后通过cmd命令来控制关机和重启的操作。 以下是实现定时关机功能的C#代码: 引入命名空间 using System.Diagnostics; 设置倒计时时间为30秒,即30秒后关机 var shutdownTimeInSeco…

    C# 2023年6月1日
    00
  • Winform 实现进度条弹窗和任务控制

    针对“Winform 实现进度条弹窗和任务控制”的问题,我来给出一份完整攻略。 1. 实现进度条弹窗的一般步骤 在 Winform 中实现进度条弹窗的一般步骤如下: 1.1 创建进度条窗口 首先,创建一个新的窗口,用于展示进度条。 1.2 创建进度条控件 在进度条窗口中创建一个进度条控件,用于展示当前进度。 1.3 显示进度条窗口 使用 ShowDialog…

    C# 2023年6月6日
    00
  • C# 输出字符串到文本文件中的实现代码

    下面是在 C# 中输出字符串到文本文件中的实现代码攻略: 1. 创建文件并写入字符串 代码实现 using System.IO; // 定义字符串变量 string str = "hello world!"; // 创建一个文件流 FileStream fs = new FileStream("output.txt",…

    C# 2023年5月31日
    00
  • C#使用stackalloc分配堆栈内存和非托管类型详解

    关于“C#使用stackalloc分配堆栈内存和非托管类型详解”的完整攻略,下面是我提供的细致讲解。 1. stackalloc简介 stackalloc是C#语言的一种内存分配语法,可以用来在栈上分配存储空间。在使用stackalloc时,必须是将堆栈分配内存全部使用完毕之后才会自动释放,也就是说它分配的内存无法被回收。 使用stackalloc分配内存时…

    C# 2023年6月6日
    00
  • 详解最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    详解最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三) 简介 在使用 .NET 进行开发时,经常需要进行文件压缩和解压缩操作。而 ZIP 文件是比较常见的一种文件格式。在 .NET 中,我们可以使用 System.IO.Compression 命名空间下的类进行 ZIP 文件的操作。不过,这些类并不是特别完备,对于一些高级的操作,我们需…

    C# 2023年6月3日
    00
  • C#使用StopWatch获取程序毫秒级执行时间的方法

    我来为您讲解C#使用StopWatch获取程序毫秒级执行时间的方法: 什么是StopWatch类 StopWatch类是.NET Framework中的一个计时器类,可以用来精确地测量一段代码的执行时间。它使用了高精度计数器(比如CPU计时器)来测量时间,因此能够精确到毫秒、微秒和纳秒级别,比使用DateTime.Now等类更加准确。 如何使用StopWat…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部