Domanda

Sto cercando di creare favicon.ico file a livello di programmazione da Python, ma PIL ha solo il supporto per la lettura ico File.

È stato utile?

Soluzione

Secondo Wikipedia i browser moderni possono gestire le favicon in formato PNG, quindi forse potresti semplicemente generarlo?

In alternativa il Articolo dell'ICO descrive il formato...

Altri suggerimenti

Puoi usare Cuscino:

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

Facoltativamente, puoi specificare le dimensioni delle icone che desideri:

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

IL Documenti sul cuscino dire che per impostazione predefinita genererà dimensioni[(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (255, 255)] e qualsiasi dimensione maggiore della dimensione originale o 255 verrà ignorata.

Sì, è nel Sola lettura sezione dei documenti, ma funziona in una certa misura.

Forse quanto segue funzionerebbe:

  • Genera l'immagine della tua icona utilizzando PIL
  • Converti l'immagine in formato .ico utilizzando l'interfaccia Python in ImageMagick, PythonMagick

Non ho provato questo approccio.Il programma da riga di comando ImageMagick convert è stato in grado di convertire un file .png nel formato .ico, quindi almeno ImageMagick supporta il formato .ico.

Non so se questo vale per tutti i casi, ma su WinXP un .ico può essere un bmp di dimensione 16x16, 32x32 o 64x64.Basta cambiare l'estensione in ico da bmp e sei pronto per partire.

Se hai imageio, (probabilmente la migliore libreria per leggere/scrivere immagini in Python), puoi usarla:

import imageio

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

L'installazione è facile come

pip install imageio
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top