Я пытаюсь написать программу, которая случайным образом обменивает пиксели на изображении, чтобы сделать его совершенно новым. Я генерирую два набора случайных значений для строки и столбца, а затем хочу обменять эти пиксели изображения.
Но по какой-то причине мой код просто не выполняет то, что я хочу. Изображение выглядит относительно похожим на исходное изображение, но выглядит немного размытым.
Я хочу, чтобы конечным результатом было то же изображение, но с некоторыми (или всеми) пикселями, случайно расположенными в другом месте.
def get_pixel(image, i, j):
# Inside image bounds?
width, height = image.size
if i > width or j > height:
return None
# Get Pixel
pixel = image.getpixel((i, j))
return pixel
from PIL import Image
from argparse import ArgumentParser
import random as r
parser = ArgumentParser()
parser.add_argument("-p",dest="picture",
help="write the name of the photo with the file type")
args= parser.parse_args()
image = Image.open(args.picture)
# Get size
width, height = image.size
pixels = image.load()
ran1 = r.randint(0, width-1)
ran2 = r.randint(0, height-1)
for i in range(ran1):
for j in range(ran2):
# Get Pixel
rand1 = r.randint(0, width-1)
rand2 = r.randint(0, height-1)
rand3 = r.randint(0, width-1)
rand4 = r.randint(0, height-1)
pixel = get_pixel(image, rand1, rand2)
pixel2 = get_pixel(image, rand3, rand4)
# Set Pixel in new image
pixels[rand1, rand2] = (pixel2[0], pixel2[1],pixel2[2])
pixels[rand3, rand4] = (pixel[0], pixel[1],pixel[2])
# Return new image
image.save('lol.png', 'png')