Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 13, 2009 21:52:20

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

PIL - некорректный результат ресайза картинки с альфаканалом

:) ну так ты не задумывался, что можно конвертировать на промежутке , чисто теоретически :)

Офлайн

#2 Ноя. 13, 2009 23:55:34

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

PIL - некорректный результат ресайза картинки с альфаканалом

Ну чтож, объявляю этот топик, топиком ненависти к PIL =)



Офлайн

#3 Ноя. 14, 2009 13:21:51

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

PIL - некорректный результат ресайза картинки с альфаканалом

sypper-pit
а может это происходит только с PNG
В PIL'e вообще все хреново, и не только с PNG, у меня пробелмы возникли с GIF-анимацией, так как PIL скотина GIF87 делает (который не поддерживает анимацию), пришлось дописывать свой модулец для поддержки анимированных гифов: познавательно, конечно, но, как бы медленно….
lorien
Ну чтож, объявляю этот топик, топиком ненависти к PIL smile
Есть инструмент и он призван решать свои задачи, просто нужно использовать PIL там, где не нужно ничего сложного/критичного по скорости (типа простенькую капчу сваять), …. Конечно если писать графический редактор =) =) =) …, то тут можно его и возненавидеть =).
lorien
а там какой-то ахтунг
+1, там, честно говоря, сплощь и рядом в коде ахтунг =)
lorien
Тока это, конечно, неправильно. А правильно было бы послать автору патчи, которые фиксят баги
Ага, куда посылать-то ? Последний релиз 3 года назад был =)



Офлайн

#4 Ноя. 14, 2009 15:46:46

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

PIL - некорректный результат ресайза картинки с альфаканалом

regall
Ага, куда посылать-то ? Последний релиз 3 года назад был
Сейчас есть бета новой версии 1.1.7, правда ничего кординально нового там нет.
У них есть список рассылки, но довольно вялый.

В общем, есть ощущение что PIL медленно умирает.



Отредактировано (Ноя. 14, 2009 15:53:49)

Офлайн

#5 Ноя. 14, 2009 18:07:06

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

PIL - некорректный результат ресайза картинки с альфаканалом

альтернативы:

freeimage: http://sourceforge.net/projects/freeimagepy/
imagemagick: http://www.imagemagick.org/script/api.php#python
gegl: http://gegl.org/pygegl/ (?)

ваши варианты? =)



Офлайн

#6 Ноя. 14, 2009 19:12:22

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

PIL - некорректный результат ресайза картинки с альфаканалом

gegl думаю довольно перспективная штука, хотят питонячий биндинг не смотрел

Офлайн

#7 Ноя. 27, 2009 16:50:15

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

PIL - некорректный результат ресайза картинки с альфаканалом

собственно говоря, проблема ради которой создавался топик, решилась следующим образом:
1. ставим патчик к PIL
http://git.kitsu.ru/patched/pil.git?a=commitdiff;h=b8f1c572430b06b5d4294fb2bf29327275120554

2. и делаем вот так:

from PIL import Image

im = Image.open("sega.png")
im = im.convert("RGBa")

cur_width, cur_height = im.size
new_width, new_height = (200, 200)

if not new_width == 0 and not new_height == 0:
ratio = min(float(new_width)/cur_width,
float(new_height)/cur_height)
else:
if new_width == 0:
ratio = float(new_height)/cur_height
else:
ratio = float(new_width)/cur_width


new_dimensions = (int(round(cur_width*ratio)),
int(round(cur_height*ratio)))

new_im = im.resize(new_dimensions, Image.ANTIALIAS)
new_im = new_im.convert("RGBA")

new_im.save('rez.png')



Отредактировано (Ноя. 27, 2009 16:51:58)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version