Есть код (кусок код который отвечает за ресайз в приложении 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), но уже кончились идеи. =)