Search code examples
pythonpython-imaging-librarypastecrop

How to crop from one image and paste into another with PIL?


With PIL, I am trying to copy a rectangle out of an image, and paste it into another. This is my code:

import Image
ii = Image.open("ramza.png")
box = (70, 70, 30, 30)
region = ii.crop(box)
io = Image.open("template.png")
io.paste(region, box)
io.save("output.png")

And I am getting this error:

ValueError: images do not match

Do any of you know a fix to this?


Solution

  • A PIL crop box is defined as a 4-tuple of pixel coordinates: (left, upper, right, lower).

    To fix your code to get a 30x30 crop:

    box = (70, 70, 100, 100)
    

    Broken down into components:

    x, y, w, h = (70, 70, 30, 30)
    box = (x, y, x + w, y + h)