Magick.NET 并创建隐藏文本水印

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

有没有办法创建隐藏的水印文本,以便我们可以验证我们的图像将来是否被复制到另一个网站上?我们目前正在使用下面的代码,但它只是将文本写在图像上,而不是隐藏起来并且不可见。除了水印之外,我还能用 Magick.NET 处理这种情况吗?

下面的代码似乎没有在新文件上返回 0。

     using (var message = new MagickImage("label:© Events", 200, 20))
 {
     using (var image = new MagickImage(imagePath))
     {
         image.Stegano(message);
         image.Write(imageSteganoPath);

         var settings = new MagickReadSettings();
         settings.Format = MagickFormat.Stegano;
         settings.Width = 200;
         settings.Height = 20;

         using (var hiddenMessage = new MagickImage(imageSteganoPath, settings))
         {
             Assert.AreEqual(0, message.Compare(hiddenMessage, ErrorMetric.RootMeanSquared));
         }
     }
 }
c# .net image-processing watermark magick.net
1个回答
0
投票

我改进了你的脚本,试试吧:

using (var originalImage = new MagickImage(imagePath))
{
    // Create an image containing the hidden message
    using (var messageImage = new MagickImage(new MagickColor(0, 0, 0, 0), originalImage.Width, originalImage.Height))
    {
        var drawables = new Drawables()
            // Set the font size small and color close to the background or transparent
            .FontPointSize(10)
            .FillColor(new MagickColor(0, 0, 0, 1)) // Nearly transparent
            // Position the text at a specific location, repeat this for multiple locations if needed
            .TextAlignment(TextAlignment.Left)
            .Text(0, 20, "© Events")
            // Apply the settings to the message image
            .Draw(messageImage);

        // Combine the original image and the message image
        originalImage.Composite(messageImage, CompositeOperator.Over);

        // Save the image with the hidden watermark
        originalImage.Write(imageSteganoPath);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.