2014-08-31 3 views
0

я пытаюсь создать программу в JES с двумя функциями, основной() и addVignette (inputPic, виньетка)Jython JES: добавление профиля виньетка

Основная функция(), где два объекта изображения будет создано. Я хочу, чтобы он позволял пользователю выбирать входное изображение (изображение, которое нужно манипулировать), а затем разрешать пользователю выбирать виньетку (vignette_profile.jpg). Как только эти два объекта изображения будут созданы, он должен затем вызвать addVignette (inputPic, виньетка).

Функция addVignette (inputPic, vignette) должна быть записана для приема двух объектов изображения в качестве параметров. Эти объекты изображения были созданы в функции main() и переданы в качестве входных данных для этой функции. Таким образом, в основном, используя два объекта изображения, мне нужна моя функция для выполнения операции добавления виньетки, и эта операция должна применяться против каждого пикселя в изображении inputPic. Недавно отредактированное изображение должно отображаться на экране.

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

спасибо, ребята!

def main(): 
    file1 = pickAFile() 
    file2 = pickAFile() 
    inputPic=makePicture(file1) 
    vignette=makePicture(file2) 
    addVignette(inputPic,vignette) 

    def addVignette(inputPic,vignette): 
    if getWidth(inputPic)==getWidth(vignette) and getHeight(inputPic)==getHeight(vignette): 
    explore(inputPic) 
    explore(vignette) 
    allpx=getAllPixels(inputPic) 
    for px in getAllPixels(inputPic): 
    x=getX(px) 
    y=getY(px) 
    px2=getPixelAt(vignette,x,y) 
    x1=getX(px) 
    y2=getY(px) 
    r1=getRed(px) 
    r2=getRed(px2) 
    g1=getGreen(px) 
    g2=getGreen(px2) 
    b1=getBlue(px) 
    b2=getBlue(px2) 



    if (1<r2<137): 
     r3=(r2-r1)-33 
     g3=(g2-g1)+21 
     b3=(b1-b2)+51 

    if (138<r2<210): 
     r3=(r2-r1)-21 
     g3=(g2-g1)+49 
     b3=(b1-b2)+121 

    if (211<r2<246): 
     r3=(r2-r1)+66 
     g3=(g2-g1)+138 
     b3=(b1-b2)+177 

    if (247<r2<255): 
     r3=(r2-r1)+44 
     g3=(g2-g1)+125 
     b3=(b2-b1)+201 

    setRed(px,r3) 
    setGreen(px,g3) 
    setBlue(px,b) 

    explore(inputPic) 
    else: 
    print "Try Again"  

ответ

0

Это не может быть то, что вы после этого, но то, что я получил от вашего вопроса в том, что у вас есть 2 изображения, которые вы пытаетесь объединить вместе, один раз случается быть виньетка.

Пожалуйста, замените addVignette() с ниже

def addVignette(inputPic,vignette): 
    # Cycle through each pixel in the input image 
    for oPixel in getPixels(inputPic): 

    # Get the pixel from the Vignette image that is at the same 
    # location as the current pixel of the input image 
    vignettePixel = getPixel(vignette, getX(oPixel), getY(oPixel)) 

    # Get the average of the color values by adding the color 
    # values from the input & vignette together and then dividing 
    # by 2 
    newRed = (getRed(oPixel) + getRed(vignettePixel))/2 
    newGreen = (getGreen(oPixel) + getGreen(vignettePixel))/2 
    newBlue = (getBlue(oPixel) + getBlue(vignettePixel))/2 

    # Make a new color from those values 
    newColor = makeColor(newRed, newGreen, newBlue) 

    # Assign this new color to the current pixel of the input image 
    setColor(oPixel, newColor) 

    explore(inputPic) 

Мои результаты с тестовыми изображениями ниже

input image

Vignette

enter image description here