Как обрезать одно изображение и вставить в другое с помощью PIL?

С помощью PIL я пытаюсь скопировать прямоугольник из изображения и вставить его в другое. Это мой код:

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")

И я получаю эту ошибку:

ValueError: изображения не совпадают

Кто-нибудь из вас знает, как это исправить?


person Nick    schedule 19.04.2011    source источник


Ответы (2)


Поле обрезки PIL определяется как набор из 4 пиксельных координат: (left, upper, right, lower).

Чтобы исправить ваш код, чтобы получить обрезку 30x30:

box = (70, 70, 100, 100)

Разобрана на составляющие:

x, y, w, h = (70, 70, 30, 30)
box = (x, y, x + w, y + h)
person samplebias    schedule 19.04.2011

Для будущих посетителей: эта ошибка также может появиться, если аргумент box для paste содержит floats вместо ints.

person David Wolever    schedule 16.12.2011
comment
спасибо, это наихудший вид сбоя - прерывистая ошибка! большую часть времени paste отлично работает с числами с плавающей запятой, но иногда это не так.. - person fraxel; 25.11.2012