Режим изображения PIL " P "- > " RGBA"
Это моя проблема:
import Image
im = Image.open("1.png")
im.show()
print im.mode
im.convert("RGBA").save("2.png")
Ну, с моим изображением вы можете увидеть разницу.
Мой вопрос: как его правильно преобразовать?
изображение:
результат:
Примечание: исходное изображение имеет полупрозрачное свечение, результат имеет сплошное зеленое "свечение"
4 ответов
эта проблема была обнаружена здесь:
https://bitbucket.org/effbot/pil-2009-raclette/issue/8/corrupting-images-in-palette-mode
в марте 2012 года комментарий говорит, что теперь он исправлен в версии разработки PIL. Самая последняя выпущенная версия-1.1.7, поэтому исправление не будет доступно до выхода 1.2. PIL updates очень медленно, так что не ожидайте, что это выйдет в ближайшее время.
к сожалению, ваше PNG-изображение-это тип, который PIL не очень хорошо обрабатывает-paletted изображение с альфа-каналом. Когда вы открываете изображение, Альфа выбрасывается, и нет никакого способа вернуть его.
Это отличается от обычной прозрачности палитры, где один индекс палитры используется для обозначения полностью прозрачные пиксели.
можно использовать scipy.misc.imread
:
img = scipy.misc.imread(filename, mode='RGBA')
img = Image.fromarray(img)
ваша проблема в том, что вы не предоставляете информацию о том, что PIL должен использовать в качестве источника Альфа-канала.
PIL не будет самостоятельно добавлять прозрачность к вашему изображению.
какую часть вашего изображения вы хотите сделать прозрачной?