2016-12-17 8 views
0
def blendPictures(pict1, pict2, overlapAmt): 
    width1 = getWidth(pict1) 
    height1 = getHeight(pict1) 
    width2 = getWidth(pict2) 
    height2 = getHeight(pict2) 

    newWidth = width1 + width2 - overlapAmt 
    newHeight = min(height1, height2) 

    newCanvas = makeEmptyPicture(newWidth, newHeight) 

    for x in range(width1 - overlapAmt): 
    for y in range(newHeight): 
     color = getColor(getPixel(pict1, x, y)) 
     setColor(getPixel(newCanvas, x, y), color) 


    pict2_x = 0 
    for pict1_x in range(width1 - overlapAmt, width1): 
    for y in range(newHeight): 
     pixel1 = getPixel(pict1, pict1_x, y) 
     pixel2 = getPixel(pict2, pict2_x, y) 
     newRed = 0.50 * getRed(pixel1) + 0.50 * getRed(pixel2) 
     newGreen = 0.50 * getGreen(pixel1) + 0.50 * getGreen(pixel2) 
     newBlue = 0.50 * getBlue(pixel1) + 0.50 * getBlue(pixel2) 
     color = makeColor(newRed, newGreen, newBlue) 
     setColor(getPixel(newCanvas, pict1_x, y), color) 
    pict2_x = pict2_x + 1 


    targetX = width1 
    for x in range(overlapAmt, width2): 
    for y in range(newHeight): 
     color = getColor(getPixel(pict2, x, y)) 
     setColor(getPixel(newCanvas, targetX, y), color) 
    targetX = targetX + 1 


    return newCanvas 


def swapBackground(src, background, newBackground): 
    # src, and background must be the same size 
    # newBackground must be at least as big as src and background 
    for x in range(1, getWidth(src) + 1) : 
       for y in range(1, getHeight(src) + 1) : 
     srcPxl = getPixel(src, x, y) 
      backgroundPxl = getPixel(background, x, y) 
      if (distance(getColor(srcPxl), getColor(backgroundPxl)) < 15.0): 
       setColor(srcPxl, getColor(getPixel(newBackground, x, y) ) ) 
    return src 


jackalope = blendPictures('rabbit.jpg', 'antelope.jpg', 50) 
writePictureTo(jackalope, "./jackalope.jpg") 
#here swap the background to place your photo on front 
swapBackground('photograph.jpg', 'jackalope.jpg', newBackground) 
writePictureTo(newBackground, "./nexttojackalope.jpg") 


swapBackground('rabbit.jpg', 'campus.jpg', newBackground1) 
writePictureTo(newBackground1, "./campustemp.jpg") 
swapBackground('antelope.jpg', 'campustemp.jpg', newBackground2) 
writePictureTo(newBackground1, "./campusfinal.jpg") 

.jpgはどこにファイルを置くか、どこから引っ張っているかを入れます。私はジャガロープwavファイルと自分自身の写真とバックグラウンドとして置く画像とウサギとアンテロープの画像を持っています。しかし、私はまだ2行目でgetWidth(picture)が定義されていないと言ってエラーを受け取り、何をすべきか分かりません。何か案は?画像がない場合は、エラーが表示され続けます。私は間違って何をしていますか?

+0

pict1&pict2として渡すものは何ですか? –

+0

私は自分のコードが見えるように更新しました。どのようなpict 1と2があったか – ThenewOne

答えて

0

getWidth()関数を使用するには、ピクチャオブジェクトを引数として渡す必要があります。最初にmakePicture()関数を使って画像オブジェクトを作成する必要があります。例:

pict1 = makePicture('rabbit.jpg') 
width1 = getWidth1(pict1) 

ここでは、JESでの写真の操作に関する良いガイドがあります。 http://www.cs.bu.edu/courses/cs101b1/jes/#Pictures%20and%20Sound

関連する問題