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日

相关文章

  • Javascript 使用ajax与C#获取文件大小实例详解

    下面我将详细讲解 “Javascript使用ajax与C#获取文件大小实例详解” 的完整攻略。 什么是Ajax? Ajax(Asynchronous JavaScript And XML),指异步的JavaScript和XML。可以在不重新加载整个网页的情况下与服务器交换数据并更新部分网页内容。 通过Ajax获取文件大小的步骤 创建XMLHttpReques…

    C# 2023年5月15日
    00
  • C# CSV文件读写的实现

    C# CSV文件读写的实现攻略 CSV(Comma Separated Values)是一种常用的文件格式,以逗号作为分隔符并且每行数据独占一行,适合于数据交换和数据存储。下面是实现CSV文件读写的步骤。 步骤1: 引入CSV文件格式处理库 C#中有很多好用的CSV文件格式处理库可以选择,比如:CsvHelper、LINQ to CSV等,我这里以CsvHe…

    C# 2023年6月1日
    00
  • asp.net动态加载自定义控件的方法

    下面我将详细讲解asp.net动态加载自定义控件的方法。 什么是动态加载自定义控件? 在asp.net中,页面上的控件都是静态的,它们需要在页面创建时就定义好并放置在页面上。而动态加载自定义控件则是指在程序运行时,根据需要再将控件添加进页面中。 动态加载自定义控件的方法 在asp.net中,有两种动态加载自定义控件的方法,分别是基于Page对象和基于Cont…

    C# 2023年6月3日
    00
  • 浅谈C#数组(二)

    浅谈C#数组(二) 何为数组? 数组是一组数据,这组数据有着相同的数据类型。在C#中,数组可以存储同类型的元素。 声明一个数组 C#中声明一个数组,可以使用以下格式: dataType[] arrayName; 其中,数据类型可以是C#中的任意一个数据类型,如int、string等等;arrayName则代表对象的名称。 数组初始化 C#中的数组可以在声明时…

    C# 2023年5月31日
    00
  • c# Base64编码和图片的互相转换代码

    下面是关于“c# Base64编码和图片的互相转换代码”的完整攻略: Base64编码 Base64编码是将二进制数据通过64个可打印字符来表示的一种编码方式。在C#中,我们可以使用Convert.ToBase64String()方法将一个byte数组进行Base64编码,方法原型如下: public static string ToBase64String…

    C# 2023年6月3日
    00
  • C#使用Datatable导出Excel

    Sure,以下是详细讲解”C#使用DataTable导出Excel”的完整攻略。 1. 准备工作 在开始实现功能之前需要先添加引用,右键点击项目,选择“添加”→“引用”,然后在出现的对话框中找到“Microsoft.Office.Interop.Excel”并添加引用。还需要在文件头部添加命名空间: using System.Data; using Micr…

    C# 2023年5月31日
    00
  • C#学习教程之Socket的简单使用

    C#学习教程之Socket的简单使用 什么是Socket? Socket(套接字)是支持TCP/IP协议的网络通信方式,它是一种用于网络通信的编程接口或应用程序编程接口(API),使得两个进程之间可以通过网络进行数据交互。在 C# 中,可以使用 System.Net.Sockets 命名空间中的类来实现 Socket 的编程。 如何实现 Socket 编程?…

    C# 2023年6月6日
    00
  • c#多线程网络聊天程序代码分享(服务器端和客户端)

    C#多线程网络聊天程序代码分享(服务器端和客户端) 介绍 本文所分享的是使用C#编写的多线程网络聊天程序的源代码,包括服务器端和客户端代码。网络聊天程序可以实现在不同计算机之间进行即时聊天的功能,多线程可以提升程序的并发性和性能,同时使用C#编写可以大大简化代码编写过程。 实现流程 服务器端程序编写 服务器端程序的主要作用是接受用户请求,并与客户端进行通讯。…

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