Problemas usando a biblioteca python PIL para cortar e salvar imagem
-
21-08-2019 - |
Pergunta
Im tentando cortar imagem res um bastante elevado e salvar o resultado para se certificar de sua concluída. No entanto, eu continuo recebendo o seguinte erro independentemente de como eu uso o método Save: 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()
Solução
A caixa é (esquerda, superior, direito, inferior) então talvez você quis dizer (2407, 804, 2407 + 71, 804 + 796)?
Editar :. Todos os quatro coordenadas são medidas a partir do topo / canto esquerdo, e descrever a distância entre esse canto para a borda esquerda, margem superior, margem direita e margem inferior
Seu código deve ficar assim, para obter uma área de 300x200 a partir da posição 2407.804:
left = 2407
top = 804
width = 300
height = 200
box = (left, top, left+width, top+height)
area = img.crop(box)
Outras dicas
Tente isto:
é um código simples para cortar uma imagem, e ele funciona como um encanto;)
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()
Neste caso, a imagem de entrada é 1280 x 800 px e croped é de 1280 x 399px começando no canto superior esquerdo,.