.NET Core中给上传图片的添加水印

一.安装System.Drawing.Common库

工具->NuGet 包管理->程序包管理控制台

输入命令

Install-Package System.Drawing.Common

二.代码案例实现

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;


namespace Web.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class UploadController : ControllerBase
    {
        [HttpPost]
        public void UploadFile([FromForm] FileViewModel fileViewModel)
        {
            string outputImagePath = @"C:\Users\Desktop\watermark.jpg"; // 输出图片路径
            string watermarkText = "水印文字 2024"; 
            AddWatermark(fileViewModel.file, outputImagePath, watermarkText);
        }
        void AddWatermark(IFormFile file, string outputImagePath, string watermarkText)
        {
            using (Image image = IFormFileToImage(file))
            using (Graphics graphic = Graphics.FromImage(image))
            {
                Font font = new Font("Arial", 20, FontStyle.Bold, GraphicsUnit.Pixel);
                Color color = Color.FromArgb(128, 128, 128); // 浅灰色
                SolidBrush brush = new SolidBrush(color);
                PointF point = new PointF(image.Width - 160, image.Height - 35); // 水印位置

                // 设置文字抗锯齿
                graphic.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

                // 绘制水印
                graphic.DrawString(watermarkText, font, brush, point);

                // 保存图片
                image.Save(outputImagePath, ImageFormat.Png);
            }
        }
        /// <summary>
        /// IFormFile文件转Image
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        Image IFormFileToImage(IFormFile file)
        {
            using (var memoryStream = new MemoryStream())
            {
                file.CopyTo(memoryStream);
                memoryStream.Position = 0;
                return Image.FromStream(memoryStream);
            }
        }
    }

    public class FileViewModel
    {
        public IFormFile file { get; set; }
    }
}

三.上传图片

四.实现效果

右下角 ‘水印文字 2024’就是刚刚打的水印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻中的星空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值