Как вырезать из одного изображения и вставить в другое с помощью PIL - PullRequest
9 голосов
/ 20 апреля 2011

Привет, ребята. Это, наверное, задавали миллион раз, но у меня тут небольшие проблемы. С помощью 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: изображения не совпадают

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

Ответы [ 2 ]

14 голосов
/ 20 апреля 2011

Поле кадрирования 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)
2 голосов
/ 17 декабря 2011

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

...