当前位置:首页 > 行业动态 > 正文

如何实现C中的图片水印功能?

“ csharp,public class Watermark,{, public static void AddWatermark(string imagePath, string watermarkText), {, using (var image = Image.FromFile(imagePath)), using (var graphics = Graphics.FromImage(image)), {, var font = new Font("Arial", 20, FontStyle.Bold);, var brush = new SolidBrush(Color.FromArgb(128, Color.White));, var point = new PointF(image.Width 150, image.Height 30);, graphics.DrawString(watermarkText, font, brush, point);, image.Save("output_with_watermark.jpg");, }, },},“

在C#中,添加图片水印通常涉及图像处理库,下面是一个示例代码,演示如何在C#中实现一个添加图片水印的类。

如何实现C中的图片水印功能?  第1张

你需要引用System.Drawing命名空间,这是用于图像处理的主要库,你可以创建一个名为ImageWatermark的类,该类包含一个静态方法,用于将水印添加到给定的图片上。

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public class ImageWatermark
{
    public static void AddWatermark(string sourceImagePath, string watermarkImagePath, string outputImagePath)
    {
        try
        {
            // Load the source image and the watermark image
            using (Bitmap sourceImage = new Bitmap(sourceImagePath))
            using (Bitmap watermarkImage = new Bitmap(watermarkImagePath))
            {
                // Create a graphics object from the source image
                using (Graphics g = Graphics.FromImage(sourceImage))
                {
                    // Set the composite mode to an alpha composite mode
                    g.CompositingMode = CompositingMode.SourceOver;
                    g.CompositingQuality = CompositingQuality.HighQuality;
                    // Calculate the position for the watermark image
                    int x = sourceImage.Width watermarkImage.Width 10; // 10 pixels from the right edge
                    int y = sourceImage.Height watermarkImage.Height 10; // 10 pixels from the bottom edge
                    // Draw the watermark image onto the source image
                    g.DrawImage(watermarkImage, new Point(x, y));
                }
                // Save the result to a new file
                sourceImage.Save(outputImagePath, ImageFormat.Jpeg);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}

这个类中的AddWatermark方法接受三个参数:源图片路径、水印图片路径和输出图片路径,它首先加载源图片和水印图片,然后在源图片上绘制水印图片,并将结果保存到指定的输出路径。

你可以使用以下代码来调用这个类并添加水印:

class Program
{
    static void Main()
    {
        string sourceImagePath = @"pathtoyoursourceimage.jpg";
        string watermarkImagePath = @"pathtoyourwatermarkimage.png";
        string outputImagePath = @"pathtoyouroutputimage_with_watermark.jpg";
        ImageWatermark.AddWatermark(sourceImagePath, watermarkImagePath, outputImagePath);
        Console.WriteLine("Watermark added successfully!");
    }
}

相关问答FAQs

Q1: 如何更改水印的位置?

A1: 在AddWatermark方法中,你可以通过修改变量x和y的值来更改水印的位置,如果你想将水印放在图片的左上角,可以将x和y设置为0。

Q2: 如何调整水印的透明度?

A2: 你可以使用ColorMatrix和ImageAttributes类来设置水印的透明度,在Graphics对象上调用g.SetClip()方法,并传入一个带有透明度值的Region对象,在绘制水印之前,设置Graphics.SmoothingMode属性为SmoothingMode.AntiAlias以获得更好的视觉效果。

0