2015-07-02 5 views
0

Когда вы открываете изображение в текстовом редакторе, вы получаете несколько символов, которые на самом деле не имеют смысла (по крайней мере, не для меня). Есть ли способ добавить комментарии к этому тексту, поэтому файл не будет поврежден при открытии с помощью средства просмотра изображений.Комментировать изображение «исходный код»

Так, что-то вроде этого: enter image description here

бы превратиться в это: enter image description here

+0

Просьба уточнить. Я не понимаю эту проблему. –

+0

@AltayMazlum, это не проблема, но я отредактирую свой вопрос, чтобы лучше отразить то, что я после –

+0

Я провел некоторое исследование и не пришел к ответу на вашу проблему. Прости. –

ответ

1

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

Например, для PNG вы можете установить comment поле при экспорте файла или с отдельным инструментом, как exiftool:

exiftool -comment="One does not simply put text into the image data" test.png

Если цель текста состоит в обеспечении права собственности, то взять посмотрите на цифровые водяные знаки.

+0

Спасибо! Ваш подход делает то, что я сделал. –

1

Если вы хотите на самом деле кодировать информацию в изображении вы должны использовать стеганографии (https://en.wikipedia.org/wiki/Steganography)

вики статья проходит вас через основы и показывает и пример картины кошки скрыты в картине деревьев как пример того, как вы можете скрыть информацию. В случае сокрытия текста вы можете сделать следующее:

Кодирование

  • Придумайте с фазой: Ради аргумента я буду использовать слово Hidden
  • Преобразовать этот текст числовое представление - для простоты я предполагаю преобразование символов ASCII, но не обязательно

    «Скрытый» = 72 105 100 100 101 110

  • Преобразование числового представления в двоичную

    72 = 01001000/105 = 01101001/100 = 01100100/101 = 01100100/110 = 01101110

  • Для каждой буквы преобразовать 8 бит двоичные представления на четыре 2 бита двоичных представлений, которые мы будем называть мА, мР, Мg, М.Б. по причинам, которые станут ясны в ближайшее время

    72 = 01 00 10 00 => 1 0 2 0 = мА мР мГс тВ

  • Открыть файл изображения для редактирования: Я хотел бы предложить использовать C# для загрузки изображения, а затем использовать Get/Set Пиксели редактировать их (How to manipulate images at the pixel level in C#)

  • укажите в последние 2 биты каждого цветной канал для каждого пикселя для кодирования вашего сообщения.Например, для кодирования H в первом пикселе изображения вы можете использовать код C# в конце инструкций

  • Как только все буквы Word - по одному на пиксель - были закодированы в изображении, которое вы сделали.

Декодирование

Используйте тот же основной процесс в обратном направлении.

  • Идешь через изображение одного пикселя в то время
  • Вы берете 2 значащих битов каждого цветового канала в пикселе
  • Вы сцепить LSB вместе в альфа, красный, зеленый, синий заказ ,
  • Вы преобразуете конкатенированные биты в 8-битное представление, а затем преобразуете эту двоичную форму в базовую 10. Наконец, вы выполняете поиск на базовом 10-ти в диаграмме ASCII или просто передаете число символу.
  • Вы повторяете на следующий пиксель

вещь, чтобы помнить о том, что метод, который я описал, позволит вам кодировать информацию в изображении без человеческого наблюдатель заметил, потому что он манипулирует только изображение на последние 2 бита каждого цветного канала в одном пикселе, и человеческие глаза не могут действительно отличить цвета в диапазоне [(252,252,252,252) => (255,255,255,255)].

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

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

Вот код для кодирования H в первый пиксель вашего изображения на C#.

//H=72 and needs the following message Alpha, message Red, message Green, message Blue components 
mA = 1; 
mR = 0; 
mG = 2; 
mB = 0; 
Bitmap myBitmap = new Bitmap("YourImage.bmp"); 
//pixel 0,0 is the first pixel 
Color pixelColor = myBitmap.GetPixel(0, 0); 
//the 252 places 1's in the 6 bits that we aren't manipulating so that ANDing with the message bits works 
pixelColor = Color.FromArgb(c.A & (252 + mA), c.R & (252 + mR), c.G & (252 + mG), c.B & (252 + mB)); 
myBitmap.SetPixel(0, 0, pixelColor); 
+0

Спасибо за это! Это очень интересно. –

Смежные вопросы