Подтвердить что ты не робот

Проблема с использованием библиотеки PIL python для обрезки и сохранения изображения

Я пытаюсь обрезать изображение с очень высоким разрешением и сохранить результат, чтобы убедиться, что он завершен. Однако я продолжаю получать следующую ошибку, независимо от того, как я использую метод 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()
4b9b3361

Ответ 1

Коробка (слева, сверху, справа, внизу), возможно, вы имели в виду (2407, 804, 2407 + 71, 804 + 796)?

Изменить. Все четыре координаты измеряются из верхнего/левого угла и описывают расстояние от этого угла до левого края, верхнего края, правого края и нижнего края.

Ваш код должен выглядеть так, чтобы получить область 300x200 с позиции 2407,804:

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

Ответ 2

Попробуйте следующее:

это простой код для обрезки изображения, и он работает как шарм;)

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()

В этом случае входное изображение составляет 1280 x 800 пикселей, а обрезанное - 1280 x 399 пикселей, начиная с верхнего левого угла.