PIL не сохраняет прозрачность from PIL import Image img = Image.open('1.png') img.save('2.png') Первое изображение имеет прозрачный фон, но когда я его сохраняю, прозрачность исчезает (фон белый) Что я делаю неправильно? Ответ 1 Вероятно, изображение индексируется (режим "P" в PIL), поэтому прозрачность не установлена в альфа-канале PNG, а в метаданных. Вы можете получить индекс прозрачной фоновой палитры со следующим кодом: from PIL import Image img = Image.open('1.png') png_info = img.info img.save('2.png', **png_info) Информация об изображении - это словарь, поэтому вы можете просмотреть его, чтобы увидеть информацию, которая у него есть: Например: если вы его распечатаете, вы получите следующий результат: {'transparency': 7, 'gamma': 0.45454, 'dpi': (72, 72)} Сохраненная там информация будет зависеть от инструмента, создавшего оригинальный PNG, но для вас здесь важна клавиша "прозрачность". В этом примере говорится, что индекс палитры "7" должен рассматриваться как прозрачный. Ответ 2 Вы всегда можете заставить тип "RGBA", img = Image.open('1.png') img.convert('RGBA') img.save('2.png')
Ответ 1 Вероятно, изображение индексируется (режим "P" в PIL), поэтому прозрачность не установлена в альфа-канале PNG, а в метаданных. Вы можете получить индекс прозрачной фоновой палитры со следующим кодом: from PIL import Image img = Image.open('1.png') png_info = img.info img.save('2.png', **png_info) Информация об изображении - это словарь, поэтому вы можете просмотреть его, чтобы увидеть информацию, которая у него есть: Например: если вы его распечатаете, вы получите следующий результат: {'transparency': 7, 'gamma': 0.45454, 'dpi': (72, 72)} Сохраненная там информация будет зависеть от инструмента, создавшего оригинальный PNG, но для вас здесь важна клавиша "прозрачность". В этом примере говорится, что индекс палитры "7" должен рассматриваться как прозрачный.
Ответ 2 Вы всегда можете заставить тип "RGBA", img = Image.open('1.png') img.convert('RGBA') img.save('2.png')