Найти - Пользователи
Полная версия: Нужны совету по созданию программы
Начало » Python для новичков » Нужны совету по созданию программы
1 2
Reijo13
Программа для работы с фотографиями

Нужно сделать программы, которая бы по алгоритму перемещала пиксели и делала просто с фотографией полнейший хаус
Но чтобы была возможность потом это фото “расшифровать” и получалось опять нормальное фото

Нужны советы, что да как делать, я совсем не разбираюсь в этом и только начал изучать python
doza_and
Reijo13
Нужны советы, что да как делать
Зашифровать данные любым криптоалгоритмом. Тут и питон не нужен. Берете и архивируете изображение любым архиватором с указанием пароля.
marvellik
Reijo13
Нужны советы, что да как делать, я совсем не разбираюсь в этом и только начал изучать python
для начала изучи что такое списки, матрицы потом попробуй получить фотографию в виде списка или матрицы ну а затем придумай алгоритм как изменить последовательность в этой матрице по заданному алгоритму и по тому же алгоритму наоборот вернуть все на исходные места
py.user.next
doza_and
Берете и архивируете изображение любым архиватором с указанием пароля.
Да, а ещё лучше сразу программу для шифрования взять :) Ему нужно получить зашифрованное изображение в итоге.
FishHook
doza_and
Зашифровать данные любым криптоалгоритмом. Тут и питон не нужен. Берете и архивируете изображение любым архиватором с указанием пароля.
Я так понял, что ТС хочет, чтобы итоговый файл оставался тем не менее читаемым изображением, с белым шумом, но картинкой. Просто так зазипвать файл, не получится.
JOHN_16
FishHook
я тоже понял задачу именно так. В таком ракурсе она даже выглядит интересной что ли. Т.е. нужен алгоритм который может внести шум, и потом его ликвидировать.
Shaman
Всё равно подходит шифрование, но только для данных о пикселах. Формат изображения должен подразумевать хранение/сжатие без потерь.
Reijo13
JOHN_16
FishHookя тоже понял задачу именно так. В таком ракурсе она даже выглядит интересной что ли. Т.е. нужен алгоритм который может внести шум, и потом его ликвидировать.
Да, именно так я и хочу, но только с png, ибо они не теряют качество вообще, но вот как это всё сделать без именно шифровки файла, как тут советуют?
doza_and
Кроме криптографии есть еще Стеганография. https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%B3%D0%B0%D0%BD%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F

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

Правда все эти программы уже существуют, надо просто найти и использовать. Берете фотошопный плагин для встраивания водяных знаков и не парите мозг.
FishHook
# -*-coding:utf-8-*-
import sys
from PIL import Image
import hashlib
def get_key():
    global secret
    global password
    if secret is None:
        secret = hashlib.sha256(password).hexdigest()
        return bytearray(secret)
    secret = hashlib.sha256(secret).hexdigest()
    return bytearray(secret)
def get_pix_matrix(image):
    px = image.load()
    m = []
    width, height = image.size
    for row in range(width-1):
        r = []
        for col in range(height-1):
            a = px[row, col]
            r.append(a)
        m.append(r)
    return m
def set_pix_matrix(image, matrix):
    px = image.load()
    for i, row in enumerate(matrix):
        for j, color in enumerate(row):
            px[i, j] = color
def secure(matrix):
    result = []
    for i, row in enumerate(matrix):
        result.append(xor(row))
    return result
def xor(text):
    result = []
    while text:
        key = get_key()
        head, tail = text[:len(key)], text[len(key):]
        result += [x ^ y for x, y in zip(head, key[:len(head)])]
        text = tail
    return result
if __name__ == "__main__":
    in_file = sys.argv[1]
    out_file = sys.argv[2]
    password = sys.argv[3]
    im = Image.open(in_file)
    secret = None
    
    matrix = get_pix_matrix(im)
    new_matrix = secure(matrix)
    set_pix_matrix(im, new_matrix)
    im.save(out_file)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB