有没有办法创建隐藏的水印文本,以便我们可以验证我们的图像将来是否被复制到另一个网站上?我们目前正在使用下面的代码,但它只是将文本写在图像上,而不是隐藏起来并且不可见。除了水印之外,我还能用 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));
}
}
}
我改进了你的脚本,试试吧:
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);
}
}