Quiero pegar un montón de imágenes junto con PIL. Por alguna razón, cuando ejecuto la línea de blank.paste(img,(i*128,j*128)) me sale el siguiente error: ValueError: cannot determine region size; use 4-item box

Traté de jugar con él y mediante una tupla con los 4 elementos, como se dijo (ex. (128,128,128,128)) pero me da este error: SystemError: new style getargs format but argument is not a tuple

Cada imagen es 128x y tiene una nomenclatura estilo de «x_y.png», donde x e y son de 0 a 39. Mi código es el siguiente.

from PIL import Image

loc = 'top right/'
blank = Image.new("RGB", (6000,6000), "white")

for x in range(40):
    for y in reversed(range(40)):
        file = str(x)+'_'+str(y)+'.png'
        img = open(loc+file)
        blank.paste(img,(x*128,y*128))

blank.save('top right.png')

¿Cómo puedo conseguir que esto funcione?

InformationsquelleAutor user2901745 | 2013-10-21

3 Comentarios

  1. 5

    Usted no carga correctamente la imagen. La función integrada abierto sólo abre un nuevo descriptor de archivo. Para cargar una imagen con PIL, uso Image.open lugar:

    from PIL import Image
    im = Image.open("bride.jpg") # open the file and "load" the image in one statement

    Si usted tiene una razón para utilizar el construido-en abierto, a continuación, hacer algo como esto:

    fin = open("bride.jpg") # open the file
    img = Image.open(fin) # "load" the image from the opened file

    Con PIL, «carga», una imagen que significa leer el encabezado de la imagen. PIL es perezoso, por lo que no carga los datos reales de la imagen hasta que se necesita.

    También, considere el uso de os.ruta de acceso.únete lugar de concatenación de cadenas.

    • Eso funcionó, gracias. Yo sabía que iba a ser algo estúpido como eso.
    • +1 para el sistema operativo.ruta de acceso.únete a la sugerencia.
  2. 5

    Esto funcionó para mí, estoy usando Odoo v9 y me han almohada 4.0.

    Hice los pasos en mi servidor con ubuntu:

    # pip uninstall pillow
    # pip install Pillow==3.4.2
    # /etc/init.d/odoo restart
    • su respuesta es realmente útil para mí, muchas gracias
  3. 1

    Para mí los métodos anteriores no funcionan.

    Después de comprobar image.py he encontrado que image.paste(color) necesita un argumento más como image.paste(color, mask=original). Funcionó bien para mí, cambiando a este:

    image.paste(color, box=(0, 0) + original.size)

Dejar respuesta

Please enter your comment!
Please enter your name here