Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 12, 2009 13:57:26

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

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

Есть исходная картинка:


Есть код (кусок код который отвечает за ресайз в приложении django photologue, обкоцаный так, чтоб смысл остался).

import Image

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

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.save('rez.png')
После ресайза - получаем некрасивые серые артефакты на границах:





Пробовал разные варианты ресемплирования - не помогает (кроме линейного, но там все плохо по другой причине).

По моим ощущениям это от того, что рейсайз альфаканала рассинхронизируется с ресайзом остальных каналов.

Хотелось-бы обойти это в PIL (имеенно его использует django photologue), но уже кончились идеи. =)



Отредактировано (Ноя. 12, 2009 14:22:42)

Офлайн

#2 Ноя. 12, 2009 14:24:24

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

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

Сам неоднократно замечал глюки PIL с альфаканалом :( Может его отдельно зарезайзить? Разделить методом split а потом соединить?



Офлайн

#3 Ноя. 12, 2009 14:28:03

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

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

igor.kaist Пробовал ресайзить альфаканал отдельно от остальных - результат тот-же. :(
Пытался еще поиграть с контрастностью, ярокостью альфаканала, чтоб он немного сместил свою прозрачность в нужную сторону - тоже без видимого успеха.



Офлайн

#4 Ноя. 12, 2009 15:21:14

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

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

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



Офлайн

#5 Ноя. 12, 2009 16:21:13

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

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

Просто логотипы, товарные знаки, иконки и проч нужно ресайзить без антиалиаса.
Это - правило дизайна. Или векторная графика - или “примитив со ступеньками”. Посередине ничего нет.



Офлайн

#6 Ноя. 12, 2009 16:51:22

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

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

Dimka665
та же картина и при редактировании изображений в фотошопе.
Очень странно. Попробовал GIMP, Фотошоп, ImageMagick - все нормально (чистенько и красиво).
Вот например что получается в ImageMagick:



Отредактировано (Ноя. 12, 2009 17:07:48)

Офлайн

#7 Ноя. 12, 2009 17:43:04

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

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

Уже много раз убеждался в бедности PIL'a, мое мнение: однозначно лучше использовать PythonMagick + PythonMagickWand.
Плюсы:
1. Работает несравненно быстрее.
2. Имеет не сравнительно больше различный функций.
Минусы:
1. Плохой порт на винду (хотя думаю, это не для всех минусы). Использовал в вебе для наложения эффектов на картинки, сервак - фря, а моя -то машинка локальная - на винде бегала, пришлось повозится, чтоб поставить MagickWand на винду изрядно =)
2. Очень сишный подход к разработке =) (так как просто обертка), хотя многих это и не пугает.



Отредактировано (Ноя. 12, 2009 17:43:20)

Офлайн

#8 Ноя. 12, 2009 18:07:47

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

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

Я бы рад склонится к ImageMagick, если-бы не завязанное на PIL приложение - django photologue, которое уже используется.



Офлайн

#9 Ноя. 13, 2009 21:15:28

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

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

а может это происходит только с PNG

Офлайн

#10 Ноя. 13, 2009 21:33:29

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

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

sypper-pit
а может это происходит только с PNG
я думаю, ты прав, потому что альфа-канал есть только у png )



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version