Существует ли библиотека Python для создания файлов .ico?
Вопрос
Я хочу создать favicon.ico
файлы программно из Python, но PIL поддерживает только чтение ico
файлы.
Решение
В соответствии с Википедия современные браузеры могут обрабатывать значки файлов в формате PNG, так что, может быть, вы могли бы просто сгенерировать это?
В качестве альтернативы Статья об ICO описывает формат...
Другие советы
Вы можете использовать Подушка:
from PIL import Image
filename = r'logo.png'
img = Image.open(filename)
img.save('logo.ico')
При желании вы можете указать нужные размеры значков:
icon_sizes = [(16,16), (32, 32), (48, 48), (64,64)]
img.save('logo.ico', sizes=icon_sizes)
А Документы на подушки скажите, что по умолчанию он будет генерировать размеры[(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (255, 255)]
и любой размер, превышающий исходный размер или 255, будет игнорироваться.
Да, это в Только чтение раздел документации, но в некоторой степени это работает.
Возможно, сработает следующее:
- Создайте изображение значка с помощью PIL
- Преобразуйте изображение в формат .ico, используя интерфейс Python для ImageMagick, PythonMagick
Я не пробовал этот подход.Программа командной строки преобразования ImageMagick смогла преобразовать файл .png в формат .ico, поэтому, по крайней мере, ImageMagick поддерживает формат .ico.
Я не знаю, применимо ли это ко всем случаям, но в WinXP .ico может быть BMP размером 16x16, 32x32 или 64x64.Просто измените расширение на ico с bmp, и все готово.
Если у вас есть имиджио, (вероятно, лучшая библиотека для чтения/записи изображений на Python), вы можете использовать ее:
import imageio
img = imageio.imread('logo.png')
imageio.imwrite('logo.ico', img)
Установить так же просто, как
pip install imageio