.NET加水印/验证码的NuGet包
.NET加水印/验证码的NuGet包 
我的在前两篇文章(水印,验证码)中,我介绍了使用Direct2D给图片加水印/验证码,今天我将其进行了封装,发布了一个NuGet包Sdcb.Imaging:
<PackageReference Include="Sdcb.Imaging" Version="1.1.0" />
或者在这个链接中下载:
https://www.nuget.org/packages/Sdcb.Imaging
.NET中给图片加水印
using (var imageStream = File.OpenRead(@"..\..\..\..\sample-images\src.png"))
using (var outputStream = File.OpenWrite(@"..\..\..\..\sample-images\watermark-test1.png"))
{
WatermarkTool.WatermarkText(
imageStream, outputStream,
watermark: "Watermark here",
font: "Times New Roman",
fontSize: 30,
colorARGB: 0x7f_FF_FF_FF); // 50% transparent white
}
其中,可以对字体(font),字体大小(fontSize),颜色(colorARGB)进行单独配置,原图如下:

添加水印之后的效果:

.NET中创建验证码
byte[] pngBytes = CaptchaTool.CreatePngImage(
width: 200, height: 100,
text: "CAPTCHA",
font: "Times New Roman",
fontSize: 50.0f,
lineCount: 5,
rotation: false,
turbulenceAmount: 60.0f);
File.WriteAllBytes(
@"..\..\..\..\sample-images\captcha-test1.png", pngBytes);
其中,可以对字体(font)、字体大小(fontSize)、随机线条数量(lineCount)、是否启用随机旋转(rotation)、水波移动量(turbulenceAmount)单独进行指定。
其中水波移动量(turbulenceAmount)可以为负数,表示向反方向移动。
验证码效果:

注意:
验证码不适合使用无衬线字母,因为容易分不清数字1/字母I/字母小写l;

验证码适合全大写,全大写更容易分清字母L。

开启旋转则不适合使用英文,因为英文旋转后辨识度不高(可以用中文);


水波移动量绝对值应该尽量低于100,否则人类也很难识别了。

作者:周杰
出处:https://www.cnblogs.com/sdflysha
本文采用
知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议
进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
.NET加水印/验证码的NuGet包的更多相关文章
- 使用.Net对图片进行裁剪、缩放、与加水印
图片的裁剪.缩放.与加水印,是任何系统经常要用到的功能,它们现已集成到IUtility工具中,使用十分简便.(具体代码将在文末给出,支持.NET/.NET Framework/.NET Core) 现 ...
- 【记录】VS2012新建MVC3/MVC4项目时,报:此模板尝试加载组件程序集“NuGet.VisualStudio.Interop...”
最近电脑装了 VisualStudio "14" CTP,由于把其他版本的 VS 卸掉,由高到低版本安装,当时安装完 VisualStudio "14" CTP ...
- Python练习册--PIL处理图片之加水印
背景 最近在看到了Python 练习册,每天一个小程序 这个项目,非常有趣,也比较实用. 晚上看了这第000题,关于Python图片处理: 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似 ...
- VS2012 此模板尝试加载组件程序集”NuGet.VisualStudio.interop,Version=1.0.0.0 的解决
VS2012 此模板尝试加载组件程序集”NuGet.VisualStudio.interop,Version=1.0.0.0 的解决办法 2014 年 5 月 3 日作者:mingceng 阅读次数: ...
- [2016-07-15]nuget包管理器控制台下的powershell脚本介绍
博客有阵子没打理了,今天刚恢复样式,但是标题还是不太正常,总算能凑合看看. 回到正题,最近为了能在VS的程序包管理器控制台上能方便的自定义ps脚本去调整project的package,就开始看powe ...
- nuget服务器搭建,以及如何发布一个Nuget包
本文章主要介绍如何将本地dll打包成为一个Nuget包,并如何发布到自己的nuget服务器.章节如下 1. 本地dll如何打包,以及版本的更新 2. 在linux上搭建nuget.server 3. ...
- Net包管理NuGet(4)打包nuget包的进阶用法
nuget包不止可以放进dll,还可以引用其他包,创建项目文件及替换配置文件 引用的时候同时引用依赖项假设引用某个dll需要依赖其他的dll如Zeta.Core.dll需要引用ZETA.Seriali ...
- VS2010创建MVC4项目提示错误: 此模板尝试加载组件程序集 “NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral,
在安装VS2010时没有安装MVC4,于是后面自己下载安装了(居然还要安装VS2010 SP1补丁包).装完后新建MVC项目时却提示: 错误: 此模板尝试加载组件程序集 “NuGet.VisualSt ...
- 记录使用 Cake 进行构建并制作 nuget 包
书接上一回(https://www.cnblogs.com/h82258652/p/4898983.html)?[手动狗头] 前段时间折腾了一下,总算是把我自己的图片缓存控件(https://gith ...
随机推荐
- 01-pymysql模块的安装
1.从github 下载pymysql 安装包,下载地址为:https://github.com/PyMySQL/PyMySQL 2.解压下载文件,不用打开python交互界面,cd到解压文件所在目录 ...
- 报错:java.sql.SQLException: The server
报错:java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized 在IDEA运行是报出例如相识的错误时: ...
- 曹工说Tomcat2:自己撸一个简易Tomcat Digester
一.前言 框架代码其实也没那么难,大家不要看着源码就害怕,现在去看 Tomcat 3.0的代码,保证还是看得懂一半,照着撸一遍基本上很多问题都能搞定了.这次我们就模拟 Tomcat 中的 Digest ...
- Mint-ui全局引入
1.Mint-ui在全局引入之后,在组件中使用其中的js函数,如toast() this.$toast('在全局引入之后可以直接在this.$toast中使用')
- HDU 4819:Mosaic(线段树套线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=4819 题意:给出一个矩阵,然后q个询问,每个询问有a,b,c,代表(a,b)这个点上下左右c/2的矩形区域内的( ...
- 微信小程序注册流程
响应公司号召,跟上时代潮流,接下来我将独自开发微信小程序,接下来我介绍下注册流程,后续会补上小程序开发心得. 注册流程 注册之前,需要使用一个邮箱,该邮箱作为登录小程序的账号,这个邮箱不能被微信开放平 ...
- 如何配置MySQL
解压绿色版mysql,并改名为mysql5.7 运行CMD(管理员版本,否则没有权限) 运行完后 然后就把地址改为你存放mysql5.7下的bin目录 对于新版mysql5.7没有了data目录,我们 ...
- PLT与GOT
0x01 什么是PLT和GOT 名称: PLT : 程序链接表(PLT,Procedure Link Table) GOT : 重局偏移表(GOT, Global Offset Table) 缘由: ...
- NetCore + Mysql CodeFirst 生成数据库
首先定义领域的模型类,然后配置下面的一些东西,最后执行类 1. 新建Context 继承自 DbContext public class EFProjectContext : DbContext { ...
- 『开发技术』Docker开发教程(一)安装与测试(Windows 家庭版)
0.前言 针对其他系统和版本,Docker都很容易安装,可以参考官方教程:https://docs.docker.com/docker-hub/ 由于Windows10家庭版无法安装docker,因此 ...