.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 中國大陸許可協議 進行許可,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。