Python: создание негативного изображения изображения RGB

#python #image #python-imaging-library

#python #изображение #python-imaging-library

Вопрос:

Я часами возился с Python, пытаясь выяснить, как превратить мое цветное изображение в цветной негатив, и, похоже, я просто не могу в этом разобраться..

Я импортировал файл PIL и изображение из файла PIL и знаю, что мне нужно сделать что-то похожее на (255.0 — красный, 255.0 — зеленый, 255.0 — синий), чтобы отменить изображение, но, похоже, я просто не могу понять, как включить это в мой цикл ‘for’.

Я действительно не так хорош в Python вообще, и любая помощь была бы действительно оценена =/

заранее благодарю вас 🙂

Комментарии:

1. Или, еще лучше, покажите нам весь соответствующий код, который вы написали.

Ответ №1:

 inverted = Image.eval(original, lambda(x):255-x)
  

Ответ №2:

Я сам не пользователь PIL, но быстрый поиск в документации обнаружил invert функцию.

 ImageOps.invert(image) => image
    Invert (negate) the image.
  

Возможно, это то, что вы ищете?

Комментарии:

1. мне было интересно, есть ли способ сделать это без использования функции invert.. как с самими фактическими значениями?

2. Вероятно, вам нужно изучить im.tostring и im.fromstring . Это также потребует от вас ознакомления с struct модулем Python.

Ответ №3:

Я понимаю, что эта тема довольно старая, но я наткнулся на это в своих путешествиях и подумал, что это актуально, надеюсь, это поможет.

 def invert():
    picture=makePicture("C:/somepic.png")
    for px in getPixels(picture): 
       r=getRed(px) 
       g=getGreen(px) 
       b=getBlue(px)
       newColour=makeColor(255-r,255-g,255-b) 
       setColor(px,newColour)
    repaint(picture)
  

Комментарии:

1. Требуется ли для этого импортировать определенный пакет? makePicture похоже, не является частью стандартного python.

2. аааа, конечно, это моя вина. Ошибка новичка. Я изучаю jython в JES, в который должны быть включены некоторые дополнительные элементы.

Ответ №4:

 for r,row in enumerate(myPicture):
    for c,value in enumerate(row):
        myPicture[r][c] = invert(value)