Esiste una libreria Python per generare file .ico?
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.
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