Есть ли библиотека Python для генерации .ico файлов? - PullRequest
18 голосов
/ 05 сентября 2008

Я хочу создавать favicon.ico файлы программно из Python, но PIL поддерживает только чтение ico файлов.

Ответы [ 5 ]

18 голосов
/ 23 марта 2016

Вы можете использовать Подушка :

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)

Документы Pillow говорят, что по умолчанию будут генерироваться размеры [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (255, 255)] и любой размер больше исходного или 255 будет игнорироваться.

Да, он находится в разделе Только для чтения документации, но в некоторой степени работает.

8 голосов
/ 05 сентября 2008

Согласно Википедии современные браузеры могут обрабатывать значки в формате PNG, так что, возможно, вы могли бы просто сгенерировать это?

В качестве альтернативы статья ICO описывает формат ...

7 голосов
/ 05 сентября 2008

Возможно, сработает следующее:

  • Создайте изображение значка, используя PIL
  • Преобразование изображения в формат .ico с использованием интерфейса Python для ImageMagick, PythonMagick

Я не пробовал этот подход. Программа командной строки ImageMagick convert смогла преобразовать файл .png в формат .ico, поэтому, по крайней мере, ImageMagick поддерживает формат .ico.

2 голосов
/ 05 сентября 2008

Я не знаю, применимо ли это ко всем случаям, но на WinXP .ico может иметь размер 16x16, 32x32 или 64x64. Просто измените расширение на ico с bmp, и вы готовы.

0 голосов
/ 14 сентября 2018

Если у вас есть imageio (вероятно, лучшая библиотека для чтения / записи изображений в Python), вы можете использовать ее:

import imageio

img = imageio.imread('logo.png')
imageio.imwrite('logo.ico', img)

Установить так же просто, как и

pip install imageio
...