Я хочу вставить несколько невидимых водяных знаков в свои изображения JPEG с помощью кода C#. Это означает, что мне нужна библиотека .NET, которая выполняет эту работу, а не какое-то внешнее пакетное приложение.
Какие-либо предложения?
Есть видимые и невидимые водяные знаки: riecks.com/security
Я написал «невидимое», а не «прозрачное» ...





есть порт библиотеки image magick для C#, и он может легко выполнить эту операцию за вас ...
Хранение «невидимых» данных в изображениях известно как «стеганография». Поиск в Google по запросу "steganography .net" дает эта статья как наиболее популярный - может оказаться полезным.
Эта статья на devx.com содержит библиотеку (Stego) с исходным кодом, который вы можете использовать:
Хранение секретов в секрете: стеганография с .NET
After implementing that API, it's trivial to hide a message inside a .bmp file:
ICoverFile cover = new BMPCoverFile("cover.bmp");
cover.CreateStegoFile("stego.bmp","Hello","MyPwd");
Likewise, you can extract the message just as easily:
IStegoFile stego = new
BMPStegoFile("stego.bmp","MyPwd");
Console.WriteLine(stego.HiddenMessage);
ОБНОВЛЕНИЕ: Ой, извините. Мэтт ссылался на ту же статью ... не видел этого, пока писал этот ответ.
Какая у этого цель? Это нужно для того, чтобы вы могли идентифицировать файлы JPG, взятые с вашего сайта?
Response in comments: "Yes, I want to protect my pictures by using some robust and invisible watermark. Semi-visible site logo is not an option... "
Проблема как раз та, что описана выше при обсуждении стеганографии, и связана с надежностью изображения.
Любой водяной знак, подобный тому, который вы описываете, можно использовать для идентификации прямой копии всего изображения, но с jpg мне кажется, что если его даже открыть и снова сохранить в редакторе, есть вероятность изменения сжатия, влияющего на водяной знак. Также, если кто-то должен был украсть ваше изображение и сделать с ним что-то более обширное - поработайте с цветовым балансом, немного подрежьте его и так далее, маловероятно, что какие-либо невидимые водяные знаки будут достаточно надежными, чтобы выжить и остаться узнаваемыми.
К сожалению, здесь у меня нет решения, но сама проблема далеко не тривиальная. Возможно, стоит поискать другие подходы к этому, которые вы, возможно, можете использовать параллельно с водяными знаками (возможно, пользовательские метаданные? Предотвращение легкого сохранения изображений?), Чтобы затруднить кражу ваших изображений или сделать их менее ценными, если они находятся...
Да, я хочу защитить свои фотографии с помощью надежных и невидимых водяных знаков. Полувидимый логотип сайта не вариант ...
это должен быть комментарий, а не ответ!
Есть несколько решений для невидимых водяных знаков для формата JPEG. Большинство из них изменяют значения дискретного косинусного преобразования. Поскольку у меня нет времени программировать его самостоятельно, мне нужно готовое рабочее решение. Итак, я ищу предложение, такое как упомянутая библиотека MagickNet ...
@toncidamjanic: имейте в виду, что в последний раз, когда я проверял (более года назад), такие решения были взломаны
@steven: ну, они могут быть взломаны, если вы знаете, что искать. Большинство водяных знаков представляют собой незаметный шум, вставленный в изображение, который не может быть легко обнаружен с помощью грубой силы.
Если вы работаете над важным приложением, почему бы не попробовать платную услугу?
Digimarc и Signumtech могут предоставить вам такую поддержку, используя свой SDK.
Да, платное решение тоже возможно. Мне просто нужна хорошо сделанная и проверенная библиотека.
Вы имеете в виду «невидимый» или «прозрачный»?