【朝夕教育】2023年10月 .NET CORE工具案例-DeveloperSharp(图片的裁剪、缩放、与加水印)

在这里插入图片描述

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏


🚀前言

图片的裁剪、缩放和加水印是常见的图片处理操作,以下是一些常用的工具和库:

  1. PIL:Python Imaging Library,Python 中处理图片的标准库,提供了丰富的图片处理功能。
  2. OpenCV:一个流行的开源计算机视觉库,支持各种图像处理和计算机视觉任务。
  3. ImageMagick:一款功能强大的图像处理工具,可用于从命令行处理图片,支持各种常见的格式,包括JPEG、PNG和GIF等。
  4. GraphicsMagick:一个类似于ImageMagick的图像处理工具,具有更高的性能和更低的内存使用量。
  5. Wand:一款基于ImageMagick的Python库,提供一个简单的接口来处理图片。

本文主要介绍DeveloperSharp的使用,DeveloperSharp是一个研发中大型项目必备的系统平台,也是一个低代码平台。

它主要包括了如下一些功能:

  • 基于Sql语句、存储过程、事务、分页的数据库操作。并几乎支持市面上所有种类的数据库。
  • 图片操作。裁剪、缩放、加水印。
  • http请求调用(Post与Get)
  • 高效分页
  • Web服务/WebApi的负载均衡
  • 数据库的负载均衡,以及读写分离
  • CORS跨域访问
  • UUID全球通用唯一识别码
  • MQ消息队列(请另行使用DeveloperSharp.RabbitMQ包)
  • Redis缓存(请另行使用DeveloperSharp.Redis包)
  • “异种数据库”的负载均衡
  • 其他相关功能

🚀一、图片的裁剪、缩放、与加水印

🔎1.安装包

DeveloperSharp

在这里插入图片描述

🔎2.使用

1、WEB项目

using DeveloperSharp.Framework.CoreUtility; //请先从NuGet引用DeveloperSharp包
--------------------------

//首先在Startup.cs或Program.cs文件中进行工具预载
Services.AddTransient<IUtility, Utility>();
--------------------------

//IU是在相关文件中,通过依赖注入方式获取的IUtility类型对象
//IU.PictureCutAsync("D:/fengjing.jpg", 500, 350, 200, 200, "D:/fj1.jpg");
//IU.PictureThumbnailAsync("D:/fengjing.jpg", 400, 300, "D:/fj2.jpg");
//IU.PictureTextWatermarkAsync("D:/fengjing.jpg", "世界,你好!", new Font("华文新魏", 40, FontStyle.Bold), Brushes.Azure, 500, 50, "D:/fj3.jpg");
//IU.PictureImageWatermarkAsync("D:/fengjing.jpg","D:/log.png",680, 380, "D:/fj4.jpg");

2.控制台项目

using DeveloperSharp.Framework.CoreUtility; //请先从NuGet引用DeveloperSharp包
--------------------------

IUtility ui = new Utility();
//ui.PictureCut("D:/fengjing.jpg", 500, 350, 200, 200, "D:/fj1.jpg");
//ui.PictureThumbnail("D:/fengjing.jpg", 400, 300, "D:/fj2.jpg");
//ui.PictureTextWatermark("D:/fengjing.jpg", "世界,你好!", new Font("华文新魏", 40, FontStyle.Bold), Brushes.Azure, 500, 50, "D:/fj3.jpg");
//ui.PictureImageWatermark("D:/fengjing.jpg","D:/log.png",680, 380, "D:/fj4.jpg");

原图:
在这里插入图片描述

🦋2.1 原图裁剪

PictureCut(Async)
声明:void PictureCut(string SourceFile, int CutStartPointX, int CutStartPointY, int CutWidth, int CutHeight, string TargetFile)
用途:图片裁剪
参数:(1string SourceFile   --  原始图片文件路径
     (2int CutStartPointX      --起始裁剪点X坐标
     (3int CutStartPointY    --起始裁剪点Y坐标
     (4int CutWidth        --裁剪宽度
     (5int CutHeight      --裁剪高度
     (6string TargetFile    --新生成的目标图片文件路径
返回:(无)

裁剪图:
在这里插入图片描述

🦋2.2 原图缩略

PictureThumbnail(Async)
声明:void PictureThumbnail(string SourceFile, int FrameWidth, int FrameHeight, string TargetFile)
用途:图片缩略
参数:(1string SourceFile   --  原始图片文件路径
     (2int FrameWidth      --缩略框的宽度
     (3int FrameHeight    --缩略框的高度
     (4string TargetFile        --新生成的目标图片文件路径
返回:(无)

裁剪图:
在这里插入图片描述

🦋2.3 原图加文字水印

PictureTextWatermark(Async)
声明:void PictureTextWatermark(string SourceFile, string WaterText, System.Drawing.Font WaterTextFont, System.Drawing.Brush WaterTextBrush, int x, int y, string TargetFile)
用途:图片加“文字”水印
参数:(1string SourceFile   --  原始图片文件路径
     (2string WaterText  --水印文字
     (3)System.Drawing.Font WaterTextFont    --水印文字字体
(4)System.Drawing.Brush WaterTextBrush    --水印文字笔触
(5int x    --水印图像的起始X坐标
(6int y    --水印图像的起始Y坐标
     (7string TargetFile        --新生成的目标图片文件路径
返回:(无)

裁剪图:
在这里插入图片描述

🦋2.4 原图加图片水印

PictureImageWatermark(Async)
声明:void PictureImageWatermark(string SourceFile, string WatermarkFile, int x, int y, string TargetFile)
用途:图片加“图像”水印
参数:(1string SourceFile   --  原始图片文件路径
     (2string WatermarkFile  --水印图像文件路径
     (3int x    --水印图像的起始X坐标
(4int y    --水印图像的起始Y坐标
     (5string TargetFile        --新生成的目标图片文件路径
返回:(无)

裁剪图:
在这里插入图片描述

🔎3.自定义图片的裁剪、缩放、与加水印

实现图片的裁剪、缩放和加水印,具体实现方法如下:

  1. 图片裁剪

使用C#的Bitmap类可以读取图片,并通过Graphics类的DrawImage方法实现对图片的裁剪。以下是一个简单的示例代码:

Bitmap srcImage = new Bitmap(@"C:\image.jpg");
Rectangle cropArea = new Rectangle(100, 100, 200, 200);  // 要裁剪的区域
Bitmap targetImage = new Bitmap(cropArea.Width, cropArea.Height);

using(Graphics g = Graphics.FromImage(targetImage))
{
    g.DrawImage(srcImage, new Rectangle(0, 0, targetImage.Width, targetImage.Height), 
                cropArea, GraphicsUnit.Pixel);
}

targetImage.Save(@"C:\cropImage.jpg");

在上述代码中,首先加载需要裁剪的图片,然后定义一个要裁剪的区域(cropArea),并通过Graphics类的DrawImage方法实现裁剪。最后将裁剪后的图片保存。

  1. 图片缩放

同样使用Graphics类的DrawImage方法可以实现对图片的缩放。以下是一个简单的缩放示例代码:

int newWidth = 800;  // 新的宽度
int newHeight = 600; // 新的高度

Bitmap srcImage = new Bitmap(@"C:\image.jpg");
Bitmap targetImage = new Bitmap(newWidth, newHeight);

using(Graphics g = Graphics.FromImage(targetImage))
{
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.SmoothingMode = SmoothingMode.HighQuality;
    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
    g.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));
}

targetImage.Save(@"C:\scaleImage.jpg");

在上述代码中,首先加载需要缩放的图片,然后定义新的宽度和高度(newWidth和newHeight),并通过Graphics类的DrawImage方法实现缩放。注意要设置插值模式(InterpolationMode)、平滑模式(SmoothingMode)和像素偏移模式(PixelOffsetMode)来保证缩放后的图片质量。最后将缩放后的图片保存。

  1. 加水印

使用C#的Graphics类提供了多种方法来实现图片的水印,以下是一个简单的示例代码:

Bitmap srcImage = new Bitmap(@"C:\image.jpg");
Bitmap waterMark = new Bitmap(@"C:\watermark.png");  // 水印图片
Bitmap targetImage = new Bitmap(srcImage.Width, srcImage.Height);

using(Graphics g = Graphics.FromImage(targetImage))
{
    g.DrawImage(srcImage, new Rectangle(0, 0, targetImage.Width, targetImage.Height), 
                new Rectangle(0, 0, srcImage.Width, srcImage.Height), GraphicsUnit.Pixel);
    g.DrawImage(waterMark, new Rectangle(10, 10, 100, 100));  // 水印位置
}

targetImage.Save(@"C:\watermarkImage.jpg");

在上述代码中,首先加载需要添加水印的图片和水印图片,然后通过Graphics类的DrawImage方法实现图片的叠加。可以通过设置水印图片的位置来调整水印的位置和大小。最后将添加水印后的图片保存。

需要注意的是,在实现具体功能时还需考虑一些细节问题,例如裁剪和缩放时需要判断图片的宽高比例是否合适,避免图片变形;添加水印时还需考虑水印的透明度等问题,以保证最终效果符合预期。


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值