Existe uma biblioteca Python para gerar arquivos .ico?
Pergunta
Estou procurando criar favicon.ico
arquivos programaticamente do Python, mas o PIL só tem suporte para leitura ico
arquivos.
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