🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
文章目录
🚀前言
图片的裁剪、缩放和加水印是常见的图片处理操作,以下是一些常用的工具和库:
- PIL:Python Imaging Library,Python 中处理图片的标准库,提供了丰富的图片处理功能。
- OpenCV:一个流行的开源计算机视觉库,支持各种图像处理和计算机视觉任务。
- ImageMagick:一款功能强大的图像处理工具,可用于从命令行处理图片,支持各种常见的格式,包括JPEG、PNG和GIF等。
- GraphicsMagick:一个类似于ImageMagick的图像处理工具,具有更高的性能和更低的内存使用量。
- 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)
用途:图片裁剪
参数:(1)string SourceFile -- 原始图片文件路径
(2)int CutStartPointX --起始裁剪点X坐标
(3)int CutStartPointY --起始裁剪点Y坐标
(4)int CutWidth --裁剪宽度
(5)int CutHeight --裁剪高度
(6)string TargetFile --新生成的目标图片文件路径
返回:(无)
裁剪图:
🦋2.2 原图缩略
PictureThumbnail(Async)
声明:void PictureThumbnail(string SourceFile, int FrameWidth, int FrameHeight, string TargetFile)
用途:图片缩略
参数:(1)string SourceFile -- 原始图片文件路径
(2)int FrameWidth --缩略框的宽度
(3)int FrameHeight --缩略框的高度
(4)string 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)
用途:图片加“文字”水印
参数:(1)string SourceFile -- 原始图片文件路径
(2)string WaterText --水印文字
(3)System.Drawing.Font WaterTextFont --水印文字字体
(4)System.Drawing.Brush WaterTextBrush --水印文字笔触
(5)int x --水印图像的起始X坐标
(6)int y --水印图像的起始Y坐标
(7)string TargetFile --新生成的目标图片文件路径
返回:(无)
裁剪图:
🦋2.4 原图加图片水印
PictureImageWatermark(Async)
声明:void PictureImageWatermark(string SourceFile, string WatermarkFile, int x, int y, string TargetFile)
用途:图片加“图像”水印
参数:(1)string SourceFile -- 原始图片文件路径
(2)string WatermarkFile --水印图像文件路径
(3)int x --水印图像的起始X坐标
(4)int y --水印图像的起始Y坐标
(5)string TargetFile --新生成的目标图片文件路径
返回:(无)
裁剪图:
🔎3.自定义图片的裁剪、缩放、与加水印
实现图片的裁剪、缩放和加水印,具体实现方法如下:
- 图片裁剪
使用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方法实现裁剪。最后将裁剪后的图片保存。
- 图片缩放
同样使用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)来保证缩放后的图片质量。最后将缩放后的图片保存。
- 加水印
使用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元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”