Ваш подход в первом варианте в основном правильный, но вот несколько советов, которые помогут вам заставить его работать должным образом:
Вместо того, чтобы говорить if current_color == (255,255,255):
, вы должны вместо этого поставить
if (current_color[0]>200) and (current_color[1]>200) and (current_color[2]>200):
как будто белые части изображения выглядят белыми, поэтому пиксели могут не быть точно (255,255,255).
Я думал, что вы хотите перевернуть белые частисерый, а черные части красные?В вашем коде для первого варианта строки
if current_color == (255,255,255):
new_color = (255,0,0)
станут белыми пикселями красного цвета.Чтобы сделать черные пиксели красными, это должно быть if current_color == (0,0,0)
.
Если ваш код все еще не работает при внесении этих изменений, вы можете попробовать создать новое изображение с такими же размерами, что и исходное, и добавитьпикселей к новому изображению, а не редактируйте пиксели в исходном.
Кроме того, было бы полезно, если бы вы могли рассказать нам, что на самом деле происходит при запуске кода.Есть ли сообщение об ошибке, или изображение показывается, но изображение не является правильным?Не могли бы вы приложить пример выходных данных?
Обновление: я возился с вашим кодом и заставил его делать то, что вы хотите.Вот код, с которым я закончил:
import PIL
from PIL import Image
picture = Image.open('image_one.png')
# Get the size of the image
width, height = picture.size
for x in range(width):
for y in range(height):
current_color = picture.getpixel( (x,y) )
if (current_color[0]<200) and (current_color[1]<200) and (current_color[2]<200):
new_color = (255,0,0)
picture.putpixel( (x,y), new_color)
elif (current_color[0]>200) and (current_color[1]>200) and (current_color[2]>200):
new_color2 = (115,115,115)
picture.putpixel( (x,y), new_color2)
picture.show()
Если вы скопируете и вставите этот код в скрипт и запустите его в той же папке, что и ваше изображение, он должен работать.