Добавление водяного знака невидимого изображения в C #? - PullRequest
7 голосов
/ 29 декабря 2008

Я хочу вставить несколько невидимых водяных знаков в мои изображения JPEG с помощью кода C #. Это означает, что мне нужна библиотека .NET, которая выполняет эту работу, а не какое-то внешнее пакетное приложение.

Есть предложения?

Ответы [ 5 ]

5 голосов
/ 29 декабря 2008

Хранение «невидимых» данных в изображениях известно как «стеганография». Поиск в Google по запросу "steganography .net" выдает эту статью в качестве главного хита - может оказаться полезным.

4 голосов
/ 29 декабря 2008

есть порт библиотеки изображений Magick для C #, и он может легко выполнить эту операцию за вас ...

2 голосов
/ 29 декабря 2008

Какова цель этого? Это позволит вам идентифицировать JPG, которые были взяты с вашего сайта?

Ответ в комментариях: «Да, я хочу защитить свои фотографии, используя надежный и невидимый водяной знак. Полу-видимый логотип сайта не подходит ...»

Проблема, как раз та, которая описана в обсуждении стеганографии выше, связана с устойчивостью изображения.

Любой водяной знак, такой как описанный вами, можно использовать для идентификации прямой копии всего изображения, но с помощью jpg мне кажется, что если его даже открыть и снова сохранить в редакторе, есть вероятность изменения при сжатии, влияющем на водяной знак. Кроме того, если кто-то должен был украсть ваше изображение и сделать что-то более обширное с ним, возьмите его с цветовым балансом, обрежьте его немного и т. Д. Маловероятно, что какой-либо невидимый водяной знак будет достаточно устойчивым, чтобы выжить и оставаться узнаваемым.

К сожалению, здесь у меня нет решения, но сама проблема далека от тривиальной. Может быть, стоит поискать другие подходы к нему, которые вы, возможно, можете использовать параллельно с водяными знаками (возможно, пользовательские метаданные? Не позволяющие легко сохранять изображения?), Чтобы затруднить кражу ваших изображений или сделать их менее ценными, если они есть ...

1 голос
/ 29 декабря 2008

Если это важное приложение, над которым вы работаете, почему бы не попробовать платную услугу?

Digimarc и Signumtech может оказать вам такую ​​поддержку, используя свой SDK.

1 голос
/ 29 декабря 2008

Эта статья на 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);

ОБНОВЛЕНИЕ: О, прости. Мэтт ссылался на ту же статью ... не видел этого при написании этого ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...