2011-04-19 16 views
7

Hola, chicos. Esto probablemente se haya preguntado un millón de veces, pero estoy teniendo un pequeño problema aquí. Con PIL, intento copiar un rectángulo de una imagen y pegarlo en otro. Este es mi códigoCómo recortar de una imagen y pegar en otra con 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") 

Y estoy recibiendo este error:

ValueError: images do not match

¿Alguno de ustedes conoce una solución a esto?

Respuesta

11

Un cuadro de recorte PIL se define como una 4-tupla de coordenadas de píxeles: (left, upper, right, lower).

para fijar su código para obtener un cultivo 30x30:

box = (70, 70, 100, 100) 

separadas por elementos:

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

¡Eso funcionó! Gracias. – Nick

2

para futuros visitantes: Este error también puede aparecer si el argumento box-paste contiene float s en lugar de int s.

+0

gracias, este es el peor tipo de falla: ¡la falla intermitente! la mayoría de las veces 'paste' funciona bien con flotadores, pero de vez en cuando no ... – fraxel

Cuestiones relacionadas