宝哥软件园

如何在ASP .净核心中给上传图片功能添加水印实例代码

编辑:宝哥软件园 来源:互联网 时间:2021-08-27

前言

因某些原因需要在图片上添加文字水印、图片水印,所以这里做个简单的记录。下面话不多说了,来一起看看详细的实现过程吧

实现方法:

在传统的。网框架中,我们给图片添加水印有的是通过HttpModules或者是HttpHandler,然后可以通过以下代码添加水印:

var image=new WebImage(imageBytes);图像。添加文本水印(设置。实例。水印文本,"白色",设置。实例WatermarkFontSize,opacity:设置。实例。WatermarkTextOpacityPercentage百分比但是在。净核心中不允许你这么干了,因为没有铂视觉这个类型了。在现在的。净核心中我们都是通过表单文件来上传文件,这包含了很多格式,那我们试一下吧。

首先我们一定要知道,我们要把图片保存到什么地方,我们在。净核心中获取项目目录需要最基本的构造函数,如以下定义:

public readonly ilogegimagecontroller Logger=null;私有主机环境;公共图像控制器(ILoggerImageController logger,ihostingenvironmentenv){ Logger=Logger;this.hostingEnv=env }由于可以扩展使用下简单的日志框架,我们也可以把微软那套的日志框架给构造进来。净核心添加水印的代码可以这么写。

//添加水印var watermarkedStream=新内存流();使用(var img=图像.from Stream(stream)){ 0使用(可变图形=图形.来自图像(img)){ var Font=新字体(字体系列).GenericSansSerif,20,FontStyle .粗体,图形单位。像素);变化颜色=颜色FromArgb(128,255,255,255);var brush=新的SolidBrush(颜色);变化点=新点。宽度- 120,img .身高-30);图形drawL(' cn博客。' com/zara net ',字体、画笔、点);img .保存(watermarkedStream,ImageFormat .巴布亚新几内亚);} img .保存(霍斯汀诺夫.WebRootPath'名称);}这里把传过来的内存流变成了图像也就是位图,然后我们通过了图表的类的方法,变成了可修改的图表的类型,其中的方法大概有200多个。也就是画画~

其中的完整代码如下:

[HttpSet]公共异步任务结果上传映像异步(iFIle文件){尝试{ if (null==file) { Logger .日志错误('文件为空');返回bad request();}如果(文件。长度0) {变量名称=路径. GetFileName(文件. FIlename);如果(姓名!=null){ 0使用(var stream=新内存流()){等待文件.复制同步(流);//添加水印var watermarkedStream=新内存流();使用(var img=图像.from Stream(stream)){ 0使用(可变图形=图形.来自图像(img)){ var Font=新字体(字体系列).GenericSansSerif,20,FontStyle .粗体,图形单位。像素);变化颜色=颜色FromArgb(128,255,255,255);var brush=新的SolidBrush(颜色);变化点=新点。宽度- 120,img .身高-30);图形drawL(' cn博客。' com/zara net ',字体、画笔、点);img .保存(watermarkedStream,ImageFormat .巴布亚新几内亚);} img .保存(霍斯汀诺夫.WebRootPath'名称);}返回状态代码(状态代码).状态200 ok);} } }返回bad request();}捕获(异常e){ 0记录器。日志错误(例如,$"上传图像时出错。");返回状态代码(状态代码).状态500内部服务器错误);} }最后,你可以使用邮递员进行测试。

钥匙要是你参数的名称,然后图片最后就成了这个样子。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

更多资讯
游戏推荐
更多+