win2d 图片水印
本文告诉大家如何使用 win2d 给图片加上水印。
安装
首先需要使用 Nuget 安装 win2d ,安装参见win10 uwp win2d
如果没有更新 dot net core 那么在运行可能会出现下面异常System.TypeLoadException: Requested Windows Runtime type 'Microsoft.Graphics.Canvas.Text.CanvasTextLayout' is not registered
那么直接更新 dot net core 到最新,然后清理项目就可以
获得图片
要对图片处理,首先需要拿到图片,拿到图片的方法可以是从剪贴板获得或者使用文件选取拿到。
如果是从剪贴板拿到图片,需要把图片保存到本地的临时文件夹,然后拿到文件。
如果使用文件选取拿到文件,可以使用这个方法
var pick = new FileOpenPicker();
pick.FileTypeFilter.Add(".jpg");
pick.FileTypeFilter.Add(".png");
var file = await pick.PickSingleFileAsync();
注意后缀名用的是 .+后缀名,这里我写的是很少的图片后缀名,实际上可以支持的图片后缀是很多。
创建图片
如果需要对图片处理,使用的是 CanvasRenderTarget ,可以看到这个类需要传入两个参数ICanvasResourceCreatorWithDpi,Size,我也就使用这个函数
在 win2d 使用图片需要 CanvasBitmap ,这个类不可以直接创建,需要通过LoadAsync、CreateFromBytes、CreateFromColors、CreateFromSoftwareBitmap 这些方法来创建,下面就使用第一个方法创建。
第一个方法有很多重载,需要注意,如果不是解决方案里的文件,千万不要使用文件名或 URI 的方法,因为经常出现文件无法访问。
如果不是解决方案里的文件,千万不要使用 fileName 或 URI 的方法读取图片,因为一般的文件是没有权限。即使使用 FilePick 拿到文件,文件的路径也可能拿不到。
建议使用的方法是使用流的重载,在上面,已经拿到文件,这时把文件读出来,传入就可以
var duvDbecdgiu =
await CanvasBitmap.LoadAsync(new CanvasDevice(true), await _file.OpenAsync(FileAccessMode.Read));
处理图片
现在创建 CanvasRenderTarget 处理图片,在使用 CanvasRenderTarget 记得释放,所以一般需要使用下面代码
using (var canvasRenderTarget = new CanvasRenderTarget(duvDbecdgiu, duvDbecdgiu.Size))
创建一个图片处理,大小就和图片大小相同。
在图片添加文字的方法实际上和在 win2d 的其他处理相同,具体可以去看我的win2d博客。
using (var dc = canvasRenderTarget.CreateDrawingSession())
{
dc.DrawImage(duvDbecdgiu);
dc.DrawText("lindexi",
new Vector2((float) (duvDbecdgiu.Size.Width / 2), (float) duvDbecdgiu.Size.Height/2), Colors.Black);
}
也许大家会觉得上面的DrawImage是做什么的,刚才不是从图片创建的?实际上从图片创建,但是没有画图片,也就是在使用的时候需要先画图片,然后画出文字。
保存
现在尝试保存一个图片,保存需要让用户选一个文件
var pick = new FileSavePicker();
pick.FileTypeChoices.Add("image", new List<string>() {".jpg"});
var file = await pick.PickSaveFileAsync();
保存很简单
await canvasRenderTarget.SaveAsync(await file.OpenAsync(FileAccessMode.ReadWrite),CanvasBitmapFileFormat.Jpeg);
注意保存的格式可以是很多,但是后缀名需要和保存的格式相同。
现在这个功能写在图床

欢迎大家访问我搭建的博客 win2d 图片水印 我自己搭建的博客会不断更新

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
win2d 图片水印的更多相关文章
- webform:图片水印、验证码制作
一.图片水印 1:引命名空间System.Drawing; 前端代码 <div> <asp:FileUpload ID="FileUpload1" runat=& ...
- webform(十)——图片水印和图片验证码
两者都需要引入命名空间:using System.Drawing; 一.图片水印 前台Photoshuiyin.aspx代码: <div> <asp:FileUpload ID=&q ...
- PHP图片加文字水印和图片水印方法(鉴于李老师博客因没加水印被盗,特搜集的办法。希望能有用!)
$dst_path = 'dst.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); //打上文字 ...
- IOS第17天(1,Quartz2D图片水印)
****图片 水印 #import "HMViewController.h" @interface HMViewController () @property (weak, non ...
- 本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等功能
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
- wordpress图片水印插件DX-Watermark
DX-Watermark是一款功能齐全的wordpress图片水印插件,可以自动给上传的图片添加文本或者图片水印. 后台截图: 文本水印: 图片水印: 选项说明: 类型:可选择文本或图片水印两种类型, ...
- java常用开发工具类之 图片水印,文字水印,缩放,补白工具类
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
- php图片水印添加,压缩,剪切的封装类
php对图片文件的操作主要是利用GD库扩展.当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码.当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有 ...
- PHP 图片水印类
<?php /** * 加水印类,支持文字图片水印的透明度设置.水印图片背景透明. * $obj = new WaterMask($imgFileName); //实例化对象 * $obj-&g ...
随机推荐
- Ubuntu下SVN安装和配置
一.SVN安装 1.安装包 1.$ sudo apt-get install subversion 2.创建项目目录 $ sudo mkdir /home/xiaozhe/svn $ cd /home ...
- mssql借助链接服务器进行数据快速迁移
在工作中,遇到了一个任务,需要将A数据库的数据迁移到B数据库,两个数据库的数据结构是一样的.B数据库已经在相当数量的数据了,故而不能通过复制数据库的方式来实现. 旧方法 在对数据迁移的时候,一开始使 ...
- c# file 上传EXCEL文件,以流的形式读取数据
1.引入 Aspose.Cells public void test() { HttpFileCollection filelist = HttpContext.Current.Request.Fi ...
- Grid++Report报表工具C/S实战篇(五)
一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第五部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...
- WPF Layout 系统概述 MeasureOverride和ArrangeOverride
说的非常的好:多参考!!! https://blog.csdn.net/nncrystal/article/details/47416339 https://www.cnblogs.com/dingl ...
- 全世界最顶级黑客同时沸腾在DEF CON 25,是怎样一种体验?
2017,我在这里!圆你黑客梦!! 被称为黑客“世界杯”与“奥斯卡”的美国黑帽技术大会Black Hat和世界黑客大会DEF CON 是众多黑客心中最神圣的梦! 有位小表弟告诉我说:Black ...
- 详述MSSQL服务在渗透测试中的利用(上篇)
前言: 致力于复现最实用的漏洞利用过程. 本文将带领大家学习以下内容: 学习使用`xp_cmdshell`扩展存储过程 学习调用`wscript.shell` 学习MSSQL写文件 学习沙盘模式提权 ...
- windows中eclipse调试hadoop
下载eclipse:https://www.eclipse.org/downloads/eclipse-packages 下载hadoop eclipse插件:https://github.com/w ...
- underscore.js源码研究(3)
概述 很早就想研究underscore源码了,虽然underscore.js这个库有些过时了,但是我还是想学习一下库的架构,函数式编程以及常用方法的编写这些方面的内容,又恰好没什么其它要研究的了,所以 ...
- Vue + Bootstrap 制作炫酷个人简历(二)
没想到隔了这么久才来更新. 用vue做简历,不是非常适合,为什么呢. 因为简历没什么数据上的操作,一般都是静态的内容. 不过都说了用Vue来做,也只能强行续命了. 这里是我做好的成品 非一般简历 由 ...