在C#中为SVG添加不可见水印?

问题描述 投票:0回答:1

我发现了关于图像的讨论:Adding an invisible image watermark in C#?

我发现了一些很好的开源库,用于为光栅图像添加水印。 一个例子:https://www.nuget.org/packages/Grizlah.Steganography.F5.StegSharp.Infrastruct

我的兴趣是为 SVG 图像添加水印。我知道矢量会涉及不同的算法。

c# hidden watermark computer-forensics
1个回答
0
投票

如果您有一个库来操作 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"));

© www.soinside.com 2019 - 2024. All rights reserved.