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日

相关文章

  • C#基础语法:Base关键字学习笔记

    标题:C#基础语法:Base关键字学习笔记 简介 C# 的 Base 关键字是一个重要的概念,在面向对象的编程中可以用来访问父类的成员或属性。本文将详细讲解 Base 关键字的用法及示例。 使用方式 Base 关键字可以用来调用父类中被隐藏的成员或者构造函数。 使用 Base 访问父类成员 当子类继承父类时,父类中的方法或属性在子类中可能会被重写或者被隐藏。…

    C# 2023年6月7日
    00
  • c# 网址压缩简单实现短网址

    下面是C#网址压缩简单实现短网址的完整攻略: 1. 短网址原理 短网址是将长的url经过特殊算法处理,缩短成几个字符,方便用户记忆、分享、输入等。短网址生成的过程包含以下几个步骤: 生成长的url 将url转换为数字 将数字进行压缩,生成短网址 将短网址与url映射存储到数据库 2. 算法原理 常用的短网址算法有以下几种: 哈希算法 随机数算法 自增序列算法…

    C# 2023年6月7日
    00
  • C#实现写入文本文件内容的方法

    当需要将数据写入本地文本文件时,常用的语言之一是C#。C# 为文件读写提供了方便易用的功能,使得将数据写入文本文件变得十分简单。以下是如何使用 C# 实现写入文本文件内容的方法: 1. 语法 C# 提供了 StreamWriter 类,用于将文本数据写入文件。它在 System.IO 命名空间下。 使用 StreamWriter 类之前,需要先创建一个文本文…

    C# 2023年6月1日
    00
  • C#实现学生成绩管理系统

    C#实现学生成绩管理系统 介绍 学生成绩管理系统是一种常见的应用,它提供了学生信息录入、成绩查阅等功能,方便教师和学生进行学习管理。C#是一种面向对象的编程语言,非常适合实现这种应用。 本文将介绍如何使用C#实现一个简单的学生成绩管理系统。我们将使用Visual Studio开发环境来快速构建应用。本系统将支持学生信息的录入、成绩的添加、修改和删除,以及成绩…

    C# 2023年6月7日
    00
  • C#中的LINQ to Objects详解(1)

    针对C#中的LINQ to Objects详解(1),我将为你提供以下的完整攻略: C#中的LINQ to Objects详解(1) 什么是LINQ to Objects? LINQ(Language-Integrated Query,语言集成查询),是C#语言(以及其他.NET语言)的一种查询数据的方式,它可以访问各种数据源,例如对象、数据库、XML以及各…

    C# 2023年6月1日
    00
  • C#实现餐厅管理系统

    C#实现餐厅管理系统是一个非常实用的练手项目,本篇文章将为大家分享如何通过C#编写实现一个简单的餐厅管理系统。 步骤一:需求分析 在编写程序之前,我们需要进行需求分析,明确系统功能以及每个功能的具体实现方式。对于餐厅管理系统而言,我们需要实现以下功能:- 点餐功能:包含选桌位、点菜、计算价格、打印账单等子功能;- 员工管理功能:包含员工入职、离职、工资发放等…

    C# 2023年6月7日
    00
  • 深入浅出CSS3 background-clip,background-origin和border-image教程

    深入浅出CSS3 background-clip,background-origin和border-image教程 介绍 本文将讲解CSS3中的background-clip、background-origin和border-image的用法和示例,并详细介绍它们的概念和属性设置方法。这些属性在CSS网页设计中非常有用,可以使页面元素的背景图案定制更加灵活,…

    C# 2023年5月31日
    00
  • c#线程间传递参数详解

    当我们在使用C#语言进行多线程编程时,常常需要在线程之间传递数据。本文将详细讲解C#线程间传递参数的方法。 方法一:使用Lambda表达式 在使用线程时,我们常常使用new Thread()方法创建线程。这时候,可以使用Lambda表达式的形式,在创建线程的时候传递参数。具体方法如下: using System; using System.Threading…

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