Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PIL import Image, ImageDraw, ImageFont
- import random
- # Я не понял, как разделить путь файла. Знак '\' работает в питоне как коментарий.
- # Картинка сохраняется на месте старой под тем же именем
- def function_grey_filter(img_direction):
- img = Image.open(img_direction)
- pixels = img.load()
- for i in range(img.width):
- for j in range(img.height):
- r, g, b = pixels[i, j]
- s = (r + g + b) // 3
- pixels[i, j] = (s, s, s)
- return img
- def function_2_colors(img_direction):
- img = Image.open(img_direction)
- pix = img.load()
- rng1 = random.randint(0, 255)
- rng2 = random.randint(0, 255)
- rng3 = random.randint(0, 255)
- rng_1 = random.randint(0, 255)
- rng_2 = random.randint(0, 255)
- rng_3 = random.randint(0, 255)
- rngClr = random.randint(0, 255)
- for i in range(img.width):
- for j in range(img.height):
- r, g, b = pix[i, j]
- if r > rngClr and g > rngClr and b > rngClr:
- pix[i, j] = (rng1, rng2, rng3)
- else:
- pix[i, j] = (rng_1, rng_2, rng_3)
- return img
- def function_noise(img_direction):
- img = Image.open(img_direction)
- pix = img.load()
- for i in range(img.width):
- for j in range(img.height):
- r, g, b = pix[i, j]
- rng = random.randint(1,100)
- if r + rng <= 255 and g + rng <= 255 and b + rng <= 255:
- pix[i, j] = (r + rng, g + rng, b + rng)
- elif r + rng > 255 and g + rng > 255 and b + rng <= 255:
- pix[i, j] = (r + rng, g + rng, b + rng)
- elif r + rng > 255 and g + rng <= 255 and b + rng <= 255:
- pix[i, j] = (255, g + rng, b + rng)
- elif r + rng > 255 and g + rng <= 255 and b + rng > 255:
- pix[i, j] = (255, g + rng, 255)
- elif r + rng > 255 and g + rng > 255 and b + rng > 255:
- pix[i, j] = (255, 255, 255)
- elif r + rng <= 255 and g + rng > 255 and b + rng <= 255:
- pix[i, j] = (r + rng, 255, b + rng)
- elif r + rng <= 255 and g + rng > 255 and b + rng > 255:
- pix[i, j] = (r + rng, 255, 255)
- elif r + rng <= 255 and g + rng <= 255 and b + rng > 255:
- pix[i, j] = (r + rng, g + rng, 255)
- elif r + rng > 255 and g + rng > 255 and b + rng > 255:
- pix[i, j] = (255, 255, 255)
- return img
- def function_4_tone(img_direction):
- img = Image.open(img_direction)
- pix = img.load()
- for i in range(img.width // 2):
- for j in range(img.height // 2):
- r, g, b = pix[i, j]
- rng = random.randint(r, 255)
- pix[i, j] = (255 - r, 0, 0)
- for i in range(img.width // 2, img.width):
- for j in range(img.height // 2):
- r, g, b = pix[i, j]
- rng = random.randint(0, g)
- pix[i, j] = (255, 255 - g, 0)
- for i in range(img.width // 2):
- for j in range(img.height // 2, img.height):
- r, g, b = pix[i, j]
- rng = random.randint(0, b)
- pix[i, j] = (100, 100, 255 - b)
- for i in range(img.width // 2, img.width):
- for j in range(img.height // 2, img.height):
- r, g, b = pix[i, j]
- if r + b <= 255:
- pix[i, j] = (123, r + b, r)
- else:
- pix[i, j]= (123, 255 - (r + b), r)
- return img
- def kek(img_direction):
- img = Image.open(img_direction)
- pix = img.load()
- for i in range(1, img.width // 2):
- for j in range(img.height):
- r, g, b = pix[i, j]
- pix[img.width - i, j] = (r, g, b)
- return img
- def function_stenografia(img_direction, hidden_text):
- from PIL import Image, ImageDraw, ImageFont
- import random
- fileDirection = 'C:\pics\mona_lisa.jpg'
- img = Image.open(fileDirection)
- pix = img.load()
- binary = ' '.join(format(ord(x), 'b') for x in hidden_text)
- d = ImageDraw.Draw(img)
- font = ImageFont.truetype("biondi.ttf", 15)
- font_size = d.textsize(hidden_text, font = font)
- place1 = random.randint(1, img.width - font_size[0])
- place2 = random.randint(1, img.height)
- list(hidden_text)
- for i in range(0, len(hidden_text)):
- coor = d.textsize(hidden_text[i], font=font)
- r, g, b = pix[place1 + coor[0], place2]
- if r + 10 < 255 and g + 10 < 255 and b <255:
- d.multiline_text((place1 + coor[0], place2),
- hidden_text[i], font = font, fill=(r+7, g+7, b+7))
- place1 += coor[0]
- else:
- d.multiline_text((place1 + coor[0], place2),
- hidden_text[i], font = font, fill=(r-7, g-7, b-7))
- place1 += coor[0]
- #img.show()
- return img
- while True:
- print('Добро пожаловать в Super Photoshop Primitive 3000!')
- img_direction = str(input('Укажите, пожалуйста, путь к картинке, которую вы бы хотели изменить:'))
- print('Отлично! А теперь... Что бы вы хотели сделать?')
- print('1 - серый фильтр; /n2 - отражение по вертикали посередине;')
- print('3 - 4-ёх цветный фильтр;/n4 - наложение шума;/n5 - 2-х цветный фильтр;/n6 - скрытый текст.')
- act = int(input())
- if act == 1:
- img = function_grey_filter(img_direction)
- if act == 2:
- img = kek(img_direction)
- if act == 3:
- img = function_4_tone(img_direction)
- if act == 4:
- img = function_noise(img_direction)
- if act == 5:
- img = function_2_colors(img_direction)
- if act == 6:
- txt = str(input('Введите текст, который вы бы хотели скрыть в картинке: '))
- img = function_stenografia(img_direction, txt)
- qwerty = img_direction
- img.show()
- list(img_direction)
- img_save = img_direction
- print("Сохранить?")
- act = str(input())
- if act.lower() == 'да':
- img.save(img_direction)
- break
- elif act.lower() == 'да':
- continue
- else:
- print('Не понял, ещё раз:')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement