Форум сайта python.su
0
Подскажите, пожалуйста, достаточно быстрый и наименее ресурсозатратный способ обрезки всех столбцов и строк, состоящих из прозрачных пикселей, у png-файла.
Офлайн
0
Может быть есть что-то вроде метода getbbox(), только вычисляющий не ненулевой прямоугольник, а непрозрачный прямоугольник? Всё-таки такое ощущение, что проверка попиксельно - не самое лучшее решение.
Офлайн
88
Видится двумерный бисект скана строк/столбцов. Это если руками.
Офлайн
0
тогда оставлю такой вариант решения данной задачи. может быть, кому-нибудь пригодится.
from PIL import Image im = Image.open("picture.png") box = [0,0,im.size[0],im.size[1]] yy = [] for x in xrange(im.size[0]): for y in xrange(im.size[1]): p = im.getpixel((x,y)) if p[3] is not 0: yy.append(y) if box[0] is 0: box[0] = x else: box[2] = x break box[1] = min(yy) im = im.crop(box) im.save("result.png")
Офлайн