Уведомления

Группа в Telegram: @pythonsu

#1 Июль 20, 2015 12:30:10

lyncs
От:
Зарегистрирован: 2010-09-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Обрезка прозрачной области

Подскажите, пожалуйста, достаточно быстрый и наименее ресурсозатратный способ обрезки всех столбцов и строк, состоящих из прозрачных пикселей, у png-файла.



Офлайн

#2 Июль 20, 2015 17:17:29

lyncs
От:
Зарегистрирован: 2010-09-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Обрезка прозрачной области

Может быть есть что-то вроде метода getbbox(), только вычисляющий не ненулевой прямоугольник, а непрозрачный прямоугольник? Всё-таки такое ощущение, что проверка попиксельно - не самое лучшее решение.



Офлайн

#3 Июль 20, 2015 20:14:57

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Обрезка прозрачной области

Видится двумерный бисект скана строк/столбцов. Это если руками.

Офлайн

#4 Июль 21, 2015 17:28:33

lyncs
От:
Зарегистрирован: 2010-09-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Обрезка прозрачной области

тогда оставлю такой вариант решения данной задачи. может быть, кому-нибудь пригодится.

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version