Advertisement
NickIsNotTaken

Untitled

Jul 21st, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.48 KB | None | 0 0
  1. from PIL import Image, ImageDraw, ImageFont
  2. import random
  3.  
  4. # Я не понял, как разделить путь файла. Знак '\' работает в питоне как коментарий.
  5. # Картинка сохраняется на месте старой под тем же именем
  6.  
  7. def function_grey_filter(img_direction):
  8. img = Image.open(img_direction)
  9. pixels = img.load()
  10. for i in range(img.width):
  11. for j in range(img.height):
  12. r, g, b = pixels[i, j]
  13. s = (r + g + b) // 3
  14. pixels[i, j] = (s, s, s)
  15. return img
  16.  
  17.  
  18. def function_2_colors(img_direction):
  19. img = Image.open(img_direction)
  20. pix = img.load()
  21. rng1 = random.randint(0, 255)
  22. rng2 = random.randint(0, 255)
  23. rng3 = random.randint(0, 255)
  24. rng_1 = random.randint(0, 255)
  25. rng_2 = random.randint(0, 255)
  26. rng_3 = random.randint(0, 255)
  27. rngClr = random.randint(0, 255)
  28. for i in range(img.width):
  29. for j in range(img.height):
  30. r, g, b = pix[i, j]
  31. if r > rngClr and g > rngClr and b > rngClr:
  32. pix[i, j] = (rng1, rng2, rng3)
  33. else:
  34. pix[i, j] = (rng_1, rng_2, rng_3)
  35. return img
  36.  
  37.  
  38. def function_noise(img_direction):
  39. img = Image.open(img_direction)
  40. pix = img.load()
  41. for i in range(img.width):
  42. for j in range(img.height):
  43. r, g, b = pix[i, j]
  44. rng = random.randint(1,100)
  45. if r + rng <= 255 and g + rng <= 255 and b + rng <= 255:
  46. pix[i, j] = (r + rng, g + rng, b + rng)
  47. elif r + rng > 255 and g + rng > 255 and b + rng <= 255:
  48. pix[i, j] = (r + rng, g + rng, b + rng)
  49. elif r + rng > 255 and g + rng <= 255 and b + rng <= 255:
  50. pix[i, j] = (255, g + rng, b + rng)
  51. elif r + rng > 255 and g + rng <= 255 and b + rng > 255:
  52. pix[i, j] = (255, g + rng, 255)
  53. elif r + rng > 255 and g + rng > 255 and b + rng > 255:
  54. pix[i, j] = (255, 255, 255)
  55. elif r + rng <= 255 and g + rng > 255 and b + rng <= 255:
  56. pix[i, j] = (r + rng, 255, b + rng)
  57. elif r + rng <= 255 and g + rng > 255 and b + rng > 255:
  58. pix[i, j] = (r + rng, 255, 255)
  59. elif r + rng <= 255 and g + rng <= 255 and b + rng > 255:
  60. pix[i, j] = (r + rng, g + rng, 255)
  61. elif r + rng > 255 and g + rng > 255 and b + rng > 255:
  62. pix[i, j] = (255, 255, 255)
  63. return img
  64.  
  65.  
  66.  
  67. def function_4_tone(img_direction):
  68. img = Image.open(img_direction)
  69. pix = img.load()
  70. for i in range(img.width // 2):
  71. for j in range(img.height // 2):
  72. r, g, b = pix[i, j]
  73. rng = random.randint(r, 255)
  74. pix[i, j] = (255 - r, 0, 0)
  75.  
  76. for i in range(img.width // 2, img.width):
  77. for j in range(img.height // 2):
  78. r, g, b = pix[i, j]
  79. rng = random.randint(0, g)
  80. pix[i, j] = (255, 255 - g, 0)
  81.  
  82. for i in range(img.width // 2):
  83. for j in range(img.height // 2, img.height):
  84. r, g, b = pix[i, j]
  85. rng = random.randint(0, b)
  86. pix[i, j] = (100, 100, 255 - b)
  87.  
  88. for i in range(img.width // 2, img.width):
  89. for j in range(img.height // 2, img.height):
  90. r, g, b = pix[i, j]
  91. if r + b <= 255:
  92. pix[i, j] = (123, r + b, r)
  93. else:
  94. pix[i, j]= (123, 255 - (r + b), r)
  95. return img
  96.  
  97.  
  98. def kek(img_direction):
  99. img = Image.open(img_direction)
  100. pix = img.load()
  101. for i in range(1, img.width // 2):
  102. for j in range(img.height):
  103. r, g, b = pix[i, j]
  104. pix[img.width - i, j] = (r, g, b)
  105. return img
  106.  
  107.  
  108. def function_stenografia(img_direction, hidden_text):
  109. from PIL import Image, ImageDraw, ImageFont
  110. import random
  111. fileDirection = 'C:\pics\mona_lisa.jpg'
  112. img = Image.open(fileDirection)
  113. pix = img.load()
  114. binary = ' '.join(format(ord(x), 'b') for x in hidden_text)
  115.  
  116.  
  117. d = ImageDraw.Draw(img)
  118. font = ImageFont.truetype("biondi.ttf", 15)
  119. font_size = d.textsize(hidden_text, font = font)
  120. place1 = random.randint(1, img.width - font_size[0])
  121. place2 = random.randint(1, img.height)
  122. list(hidden_text)
  123. for i in range(0, len(hidden_text)):
  124. coor = d.textsize(hidden_text[i], font=font)
  125. r, g, b = pix[place1 + coor[0], place2]
  126. if r + 10 < 255 and g + 10 < 255 and b <255:
  127. d.multiline_text((place1 + coor[0], place2),
  128. hidden_text[i], font = font, fill=(r+7, g+7, b+7))
  129. place1 += coor[0]
  130. else:
  131. d.multiline_text((place1 + coor[0], place2),
  132. hidden_text[i], font = font, fill=(r-7, g-7, b-7))
  133. place1 += coor[0]
  134. #img.show()
  135. return img
  136.  
  137.  
  138.  
  139.  
  140. while True:
  141. print('Добро пожаловать в Super Photoshop Primitive 3000!')
  142. img_direction = str(input('Укажите, пожалуйста, путь к картинке, которую вы бы хотели изменить:'))
  143. print('Отлично! А теперь... Что бы вы хотели сделать?')
  144. print('1 - серый фильтр; /n2 - отражение по вертикали посередине;')
  145. print('3 - 4-ёх цветный фильтр;/n4 - наложение шума;/n5 - 2-х цветный фильтр;/n6 - скрытый текст.')
  146. act = int(input())
  147. if act == 1:
  148. img = function_grey_filter(img_direction)
  149. if act == 2:
  150. img = kek(img_direction)
  151. if act == 3:
  152. img = function_4_tone(img_direction)
  153. if act == 4:
  154. img = function_noise(img_direction)
  155. if act == 5:
  156. img = function_2_colors(img_direction)
  157. if act == 6:
  158. txt = str(input('Введите текст, который вы бы хотели скрыть в картинке: '))
  159. img = function_stenografia(img_direction, txt)
  160. qwerty = img_direction
  161.  
  162. img.show()
  163.  
  164. list(img_direction)
  165. img_save = img_direction
  166. print("Сохранить?")
  167. act = str(input())
  168. if act.lower() == 'да':
  169. img.save(img_direction)
  170. break
  171. elif act.lower() == 'да':
  172. continue
  173. else:
  174. print('Не понял, ещё раз:')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement