Pergunta

Estou procurando criar favicon.ico arquivos programaticamente do Python, mas o PIL só tem suporte para leitura ico arquivos.

Foi útil?

Solução

De acordo com Wikipédia navegadores modernos podem lidar com favicons no formato PNG, então talvez você possa gerar isso?

Alternativamente o Artigo da OIC descreve o formato...

Outras dicas

Você pode usar Travesseiro:

from PIL import Image
filename = r'logo.png'
img = Image.open(filename)
img.save('logo.ico')

Opcionalmente, você pode especificar os tamanhos de ícone desejados:

icon_sizes = [(16,16), (32, 32), (48, 48), (64,64)]
img.save('logo.ico', sizes=icon_sizes)

O Documentos de travesseiro diga que por padrão ele irá gerar tamanhos[(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (255, 255)] e qualquer tamanho maior que o tamanho original ou 255 será ignorado.

Sim, está no Somente leitura seção dos documentos, mas funciona até certo ponto.

Talvez o seguinte funcionasse:

  • Gere sua imagem de ícone usando PIL
  • Converta a imagem para o formato .ico usando a interface python para ImageMagick, PythonMagick

Eu não tentei essa abordagem.O programa de linha de comando de conversão do ImageMagick foi capaz de converter um arquivo .png para o formato .ico, portanto, pelo menos o ImageMagick suporta o formato .ico.

Não sei se isso se aplica a todos os casos, mas no WinXP um .ico pode ser um bmp de tamanho 16x16, 32x32 ou 64x64.Basta alterar a extensão para ico de bmp e você estará pronto para começar.

Se você tem imagem, (provavelmente a melhor biblioteca para ler/escrever imagens em Python), você pode usá-la:

import imageio

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

A instalação é tão fácil quanto

pip install imageio
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top