Существует ли библиотека Python для создания файлов .ico?

StackOverflow https://stackoverflow.com/questions/45507

  •  09-06-2019
  •  | 
  •  

Вопрос

Я хочу создать 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top