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

Nick picture Nick · Apr 20, 2011 · Viewed 10.8k times · Source

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?

Answer

samplebias picture samplebias · Apr 20, 2011

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)