我发现了关于图像的讨论:Adding an invisible image watermark in C#?
我发现了一些很好的开源库,用于为光栅图像添加水印。 一个例子:https://www.nuget.org/packages/Grizlah.Steganography.F5.StegSharp.Infrastruct
我的兴趣是为 SVG 图像添加水印。我知道矢量会涉及不同的算法。
如果您有一个库来操作 svg,只需将类似的组添加到 svg 中即可。您可以通过 svg 的宽度和高度来计算使用元素的重复。
您可以使用 svg dotnet nuget 来执行此操作。
var sampleDoc = SvgDocument.Open<SvgDocument>("filePath")
var waterMarkDoc = SvgDocument.FromSvg<SvgDocument>("<svg xmlns='http://www.w3.org/2000/svg' height='500px' width='500px' >
<g>
<text id="mark" transform="rotate(-45)" fill='rgba(45,45,45,0.3)' font-size='18'>
watermark
</text>
<use href="#mark" x="100" y = "100"/>
<use href="#mark" x="200" y = "100"/>
<use href="#mark" x="300" y = "100"/>
<use href="#mark" x="100" y = "200"/>
<use href="#mark" x="200" y = "200"/>
<use href="#mark" x="300" y = "200"/>
</g>
</svg>")
foreach(var element in watermark.Children){
sampleDoc.Children.Add(element);
}
sampleDoc.Draw().Save("filename.png"));