Search code examples
pythonjythonflipmirrorjes

Flip horizontally an image in Python (JES)


I need to make a function that will copy an image, but mirrored. I created the code to mirror the image, but it isn't working and I don't know why because I traced the code and it should be mirroring the image. Here's the code:

def invert(picture):
 width = getWidth(picture)
 height = getHeight(picture)

 for y in range(0, height):
   for x in range(0, width):
    sourcePixel = getPixel(picture, x, y)
    targetPixel = getPixel(picture, width - x - 1, height - y - 1)
    color = getColor(sourcePixel)
    setColor(sourcePixel, getColor(targetPixel))
    setColor(targetPixel, color)
 show(picture)
 return picture 

def main():
  file = pickAFile()
  picture = makePicture(file)
  newPicture = invert(picture)
  show(newPicture)

Can someone explain to me what is wrong? Thank you.


Solution

  • Try this :

    def flip_vert(picture):
        width = getWidth(picture)
        height = getHeight(picture)
    
        for y in range(0, height/2):
            for x in range(0, width):
                sourcePixel = getPixel(picture, x, y)
                targetPixel = getPixel(picture, x, height - y - 1)
                color = getColor(sourcePixel)
                setColor(sourcePixel, getColor(targetPixel))
                setColor(targetPixel, color)
    
        return picture 
    
    
    def flip_horiz(picture):
        width = getWidth(picture)
        height = getHeight(picture)
    
        for y in range(0, height):
            for x in range(0, width/2):
                sourcePixel = getPixel(picture, x, y)
                targetPixel = getPixel(picture, width - x - 1, y)
                color = getColor(sourcePixel)
                setColor(sourcePixel, getColor(targetPixel))
                setColor(targetPixel, color)
    
        return picture