LINUX.ORG.RU

Не могу правильно разработать алгоритм

 ,


2

1

Добрый вечер. В экспериментальных целях хочу сделать следующий алгоритм (на питоне если что).

Есть изображение и некий ключ (произвольная строка). Задача в том чтобы каким-то образом превратить изображение по ключу в визуальный мусор и затем, соответственно по этому же ключу, вернуть его в первозданный вид. Какие варианты можно придумать? Копать в сторону перемещения пикселей или может работать с цветами пикселей? Хотелось бы услышать здравые идеи.

★★

Последнее исправление: Andreezy (всего исправлений: 1)
Ответ на: комментарий от Andreezy

Я честно говоря недоумеваю зачем это всё нужно. (Предполагаю, что это можно обойти гораздо более простыми способами.)

Но задача не самая простая. Есть несколько вариантов её решения с каждым из форматов.

Но в случае например того же Jpeg - потребуется многоуровневая обработка.

Тут есть вопросы дополнительные. Например насколько нужна требовательность к расходу памяти и к скорости исполнения.

HIS
()
Ответ на: комментарий от XoFfiCEr

Странные у тебя мерки.

Не сжатый Jpeg - это уже не Jpeg.

HIS
()
Ответ на: комментарий от peregrine

Чтобы шифровать и дешифровать Jpeg без потерь его нельзя разжимать в пиксели и обратно сжимать. Нужно работать над частотными характеристиками полей Jpeg-а. Но всё равно разжимать нужно будет одну стадию. Потому как поля с частотными характеристиками цветов и яркости потом всё равно сжимаются LZW (или LZH).

HIS
()
Ответ на: комментарий от XoFfiCEr

JPG в принципе не хранится в формате RGB ни в каком месте.

HIS
()
Ответ на: комментарий от HIS

Я не понимаю почему есть сложности с форматами. Для меня картинка jpeg или png или bmp 300х300 - это 90000 пикселей которым надо изменить цвета и заново сохранить. Какого бы формата она ни была, цвета пикселей в RGB все равно такими и остануться. Я понимаю что это все дилетанские суждения, но у меня лично такое представление

Andreezy ★★
() автор топика
Ответ на: комментарий от Andreezy

Я не понимаю почему есть сложности с форматами

Jpeg не хранит пиксели от слова вообще, а то что он хранит – оно не в RGB.

Так понятнее например? ;)

HIS
()
Ответ на: комментарий от HIS

оно не в RGB.

man cjpeg

-rgb   Create RGB JPEG file.  Using this switch suppresses the conversion from RGB colorspace input to the default YCbCr JPEG colorspace.  Use  this  switch
              in combination with the -block N switch (see below) for lossless JPEG coding.

Маэстро!

anonymous
()
Ответ на: комментарий от anonymous

Внутри Jpeg хранит не пиксели а частоты перепадов яркости и двух переходов разных цветов. И что ты мне лично хотел нового рассказать?

HIS
()
Ответ на: комментарий от HIS

нового сказать хотел?

Я? Вообще ничего. Ничего нового! Новое ты у нас выдаешь!

anonymous
()
Ответ на: комментарий от XoFfiCEr

а какой формат в rgb?

Да фиг его знает… Помню одна из вариаций BMP есть в RGB 8 бит. Есть варианты хранения Tiff и PNG в RGB, но они бывают не только 8 битные, а и более вплоть до 32 бит.

HIS
()
Ответ на: комментарий от HIS
image = Image.open('test.jpg')  # Открываем изображение
draw = ImageDraw.Draw(image)  # Создаем инструмент для рисования
width = image.size[0]  # Определяем ширину
height = image.size[1]  # Определяем высоту
pix = image.load()  # Выгружаем значения пикселей

for x in range(width):
    for y in range(height):
       r = pix[x, y][0] #узнаём значение красного цвета пикселя
       g = pix[x, y][1] #зелёного
       b = pix[x, y][2] #синего
       sr = (r + g + b) // 3 #среднее значение
       draw.point((x, y), (sr, sr, sr)) #рисуем пиксель

image.save("result.jpg", "JPEG") #не забываем сохранить изображение

Вот код который я нашел. Тут JPEG и из него извлекаются пиксели в RGB, а затем сохраняются. Исходя из этого не понимаю

а то что он хранит – оно не в RGB.

Какие тогда цвета я получил?

Andreezy ★★
() автор топика
Ответ на: комментарий от XoFfiCEr

Я знаю что есть BMP с палитрой.

Если помнишь заставку Шиндовс 95 или 98 - там внизу переливалась полоска. Так это был BMP и просто скролился участок палитры вызывая анимацию полоски.

HIS
()
Ответ на: комментарий от Andreezy

Тут JPEG и из него извлекаются пиксели в RGB, а затем сохраняются.

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

HIS
()
Ответ на: комментарий от Andreezy

от смены одного пикселя или смены всех пикселей?

после шифрования и после расшифровки?

HIS
()
Ответ на: комментарий от HIS

Если помнишь заставку Шиндовс 95 или 98 - там внизу переливалась полоска. Так это был BMP и просто скролился участок палитры вызывая анимацию полоски.

это могла быть просто gifка чего вдруг мелкомягкие стали так мудрить?!

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от XoFfiCEr

А чего мудрить-то. BMP - это мелкомягких стандарт.

И да. Я как-то сам рисовал заставку, что бы переливались другие места на заставке.

HIS
()
Ответ на: комментарий от XoFfiCEr

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

HIS
()
Ответ на: комментарий от XoFfiCEr

ТС-у виднее что нужно для его задачи.

Любой формат можно так завернуть.

HIS
()
Ответ на: комментарий от XoFfiCEr

Я не понимаю смысла такой задачи ТС.

Если это сайт – то просто можно выдать пустышку с изображением картинки с «шумом» а при тыканье в неё запросить пароль (вобщем обычное дело для сайтов).

Если ты открываешь некий файл (на своём?) компе - то нужна программа «перехватчик», которая скажет - опа! Это какая-то непонятная картинка с шумом! А давайте пользователя спросим знает ли он пароль! А откуда эта прога там возьмётся то?

Это цирк какой-то. ТС ХЗ сам понимает ли что он хочет.

HIS
()
Ответ на: комментарий от XoFfiCEr

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

peregrine ★★★★★
()
Ответ на: комментарий от Andreezy

image.save не тривиальная функция, она jpeg перекодирует с потерями, дальше очевидно всё

peregrine ★★★★★
()

А что если так уменьшаем картинку, на фоне цветового шума лепим qr-код. Сканируем его он перенаправляет на определенную веб страницу вводим пароль и получаем первоначальную картину и еще все что угодно. HIS

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от anonymous

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

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

для задач ТС подойдет.

К тому же оно гарантированно будет работать.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от XoFfiCEr

Я ХЗ за что меня тут опять забанили ХЗ за что.

По теме. Я ничего не понял.

Из того что я понял: Есть JPG картинка+код = шум в формате JPG.

Потом ХЗ что (ТС-ом так и не описано) шум в формате JPG+код = картинка в изначальном качестве в формате JPG.

Объясните как это всё работает по вашему мнению.

HIS
()
Ответ на: комментарий от HIS

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

peregrine ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.