Difficulté à utiliser la bibliothèque PIL python pour recadrer et enregistrer l'image

StackOverflow https://stackoverflow.com/questions/1076638

  •  21-08-2019
  •  | 
  •  

Question

Im essayant de recadrer une résolution assez élevée image et enregistrer le résultat pour vous assurer que son terminé. Cependant, je continue à obtenir l'erreur suivante, peu importe comment j'utiliser la méthode de sauvegarde: SystemError: tile cannot extend outside image

from PIL import Image

# size is width/height
img = Image.open('0_388_image1.jpeg')
box = (2407, 804, 71, 796)
area = img.crop(box)

area.save('cropped_0_388_image1', 'jpeg')
output.close()
Était-ce utile?

La solution

La boîte est (à gauche, supérieure, droite, bas) alors peut-être que vous vouliez dire (2407, 804, 2407 + 71, + 804 796)?

Modifier :. Tous les quatre coordonnées sont mesurées depuis le coin en haut / gauche, et décrivent la distance de ce coin vers le bord gauche, le bord supérieur, le bord droit et le bord inférieur

Votre code devrait ressembler à ceci, pour obtenir une zone 300x200 de la position 2407.804:

left = 2407
top = 804
width = 300
height = 200
box = (left, top, left+width, top+height)
area = img.crop(box)

Autres conseils

Essayez ceci:

il est un code simple pour recadrer une image, et il fonctionne comme un charme;)

import Image

def crop_image(input_image, output_image, start_x, start_y, width, height):
    """Pass input name image, output name image, x coordinate to start croping, y coordinate to start croping, width to crop, height to crop """
    input_img = Image.open(input_image)
    box = (start_x, start_y, start_x + width, start_y + height)
    output_img = input_img.crop(box)
    output_img.save(output_image +".png")

def main():
    crop_image("Input.png","output", 0, 0, 1280, 399)

if __name__ == '__main__': main()

Dans ce cas, l'image d'entrée est de 1280 x 800 px et la croped est 1280 x 399px commençant par le coin en haut à gauche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top