Я хочу вставить несколько невидимых водяных знаков в свои изображения JPEG с помощью кода С#. Это означает, что мне нужна библиотека .NET, которая выполняет эту работу, а не какое-то внешнее пакетное приложение.
Какие-либо предложения?
Я хочу вставить несколько невидимых водяных знаков в свои изображения JPEG с помощью кода С#. Это означает, что мне нужна библиотека .NET, которая выполняет эту работу, а не какое-то внешнее пакетное приложение.
Какие-либо предложения?
есть порт библиотеки изображений magick для С#, и он может легко выполнить эту операцию для вас...
Хранение «невидимых» данных в изображениях известно как «стеганография». Поиск в Google по запросу "steganography.net" дает эту статью. как его главный хит - может оказаться полезным.
Какова цель этого? Это для того, чтобы вы могли идентифицировать файлы JPG, которые были взяты с вашего сайта?
Ответ в комментариях: «Да, я хочу защитить свои фотографии с помощью надежного и невидимого водяного знака. Полувидимый логотип сайта не вариант...»
Проблема точно такая же, как описанная выше при обсуждении стеганографии, связанная с надежностью изображения.
Любой водяной знак, подобный описанному вами, может быть использован для идентификации прямой копии всего изображения, но с jpg мне кажется, что если его даже открыть и снова сохранить в редакторе, есть шанс, что изменение сжатия повлияет водяной знак. Кроме того, если кто-то украдет ваше изображение и сделает с ним что-то более масштабное — подкорректирует цветовой баланс, немного обрежет его и т. д., маловероятно, что какие-либо невидимые водяные знаки будут достаточно надежными, чтобы выжить и остаться узнаваемыми.
К сожалению, у меня здесь нет решения, но сама проблема далеко не тривиальна. Возможно, стоит поискать другие подходы к этому, которые вы, возможно, можете использовать параллельно с водяными знаками (возможно, настраиваемые метаданные? предотвращение легкого сохранения изображений?), чтобы затруднить кражу ваших изображений или сделать их менее ценными, если они являются...
Эта статья на devx.com содержит библиотеку (Stego) с исходным кодом, который вы можете использовать:
Сохранение секретов в секрете: стеганография с .NET
После реализации этого API скрыть сообщение внутри файла .bmp несложно:
ICoverFile cover = new BMPCoverFile("cover.bmp");
cover.CreateStegoFile("stego.bmp","Hello","MyPwd");
Точно так же вы можете легко извлечь сообщение:
IStegoFile stego = new
BMPStegoFile("stego.bmp","MyPwd");
Console.WriteLine(stego.HiddenMessage);
ОБНОВЛЕНИЕ. Извините. Мэтт ссылается на ту же статью... не видел этого при написании этого ответа.
Если вы работаете над важным приложением, почему бы не попробовать платную услугу?
Digimarc и Signumtech может оказать вам такую поддержку, используя свой SDK.