favicon.png vs favicon.ico - perché dovrei usare PNG invece di ICO?


442

A parte il fatto che PNG è un formato di immagine più comune, c'è qualche motivo tecnico per favorire favicon.png rispetto a favicon.ico?

Sto supportando i browser moderni che supportano tutte le icone preferite di PNG.

Risposte:


233

Risposta sostituita (e trasformata in Wiki comunità) a causa di numerosi aggiornamenti e note di vari altri in questo thread:

  • ICO e PNG consentono entrambi la trasparenza basata sul canale alfa completo
  • ICO consente la retrocompatibilità con i browser meno recenti (ad es. IE6)
  • PNG probabilmente ha un più ampio supporto degli strumenti per la trasparenza, ma puoi trovare strumenti per creare anche ICO a canale alfa, come lo strumento Dynamic Drive e il plug-in Photoshop menzionato da @mercator.

Sentiti libero di consultare le altre risposte qui per maggiori dettagli.


78
L'ICO consente anche il canale alfa
— Álvaro González,

58
-1 ICO supporta risoluzioni multiple incluso il canale alfa completo. A proposito, l'alfa a 1 bit è conosciuta come "trasparenza". L'unico limite reale che ICO ha avuto era con icone più grandi o uguali a 256 di lunghezza (qualsiasi direzione), sebbene sia stato superato più volte.
— Christian,

26
-1 .ico consente anche la risoluzione multipla in un file (16x16 e 32x32 per esempio). Quindi le icone restano belle quando si crea un collegamento su un desktop.
— gagarine,

4
La maggior parte dei browser preferisce il favicon.ico nella radice rispetto a quello collegato. Con la tua soluzione, la maggior parte dei browser sceglierebbe il .ico non trasparente invece del png collegato.
— Lode,

@lode perché sceglierebbe in particolare un ico non trasparente anziché un ico trasparente?
— Rob Grant,

367

Tutti i browser moderni (testati con Chrome 4, Firefox 3.5, IE8, Opera 10 e Safari 4) richiederanno sempre un a favicon.icomeno che non sia stata specificata un'icona di collegamento tramite <link>. Quindi se non lo specifichi esplicitamente, è meglio avere sempre un favicon.icofile, per evitare un 404. Yahoo! ti suggerisce di renderlo piccolo e memorizzabile nella cache.

E non devi nemmeno scegliere un PNG solo per la trasparenza alfa. I file ICO supportano bene la trasparenza alfa (cioè il colore a 32 bit), anche se quasi nessuno strumento ti consente di crearli. Uso regolarmente il generatore FavIcon di Dynamic Drive per creare favicon.icofile con trasparenza alfa. È l'unico strumento online che conosco che può farlo.

C'è anche un plug-in gratuito per Photoshop che può crearli.


6
Ottimo suggerimento per questo strumento Dynamic Drive! Aggiunto istantaneamente ai segnalibri. Grazie!
— Marcos Buarque,

3
per quanto riguarda gli strumenti, è in gran parte falso; ci sono diversi strumenti per la progettazione di icone. Ne ho scritto uno io stesso in passato.
— Christian,

4
Per quelli che non hanno $ 650 dollari per Photoshop, puoi usare pixlr.com (gratuitamente) per creare, modificare e salvare file .png con livelli e trasparenza completi :)
— Scott B

3
@Pacerier È incredibilmente difficile ottenere il .icomontaggio su PS. E anche se lo fai, il risultato finale è davvero pessimo, penseresti che .bmpfosse un formato migliore (aggiunge un sacco di metadati rendendo il re-editing un enorme problema).
— Christian,

4
@mikevoermans: è ancora letto come un PNG; la maggior parte dei browser moderni non si preoccupa così tanto delle estensioni dei file. A proposito, questa è la risposta migliore e dovrebbe essere quella accettata.
— rvighne,

48

I file .png sono belli, ma i file .ico offrono anche trasparenza al canale alfa, oltre a garantire la retrocompatibilità.

Dai un'occhiata al tipo di StackOverflow utilizzato ad esempio (nota che è trasparente):

<link rel="shortcut icon" href="http://sstatic.net/so/favicon.ico"> 
<link rel="apple-touch-icon" href="http://sstatic.net/so/apple-touch-icon.png"> 

La cosa Apple-Itouch è per gli utenti di iPhone che effettuano un collegamento a un sito Web.


16
PNG può anche fornire un canale alfa
— Álvaro González,

10
sì, il mio punto era che ico's può fare tutto ciò che png può fare (trasparenza alfa) come favicon, e inoltre sono supportati da tutti i browser dall'anno 0.
— Wouter van Nifterick,

secondo Wikipedia Internet Explorer non supporterà una linea come questa: <link rel = "icon" type = "image / vnd.microsoft.icon" href = " example.com/image.ico " />
— frankster

2
È probabile che il sito Web non supporti i browser dall'anno 0, quindi perché preoccuparsi? Prova a caricare un sito Web moderno in IE6 e vedi cosa succede;)
— Dominic

26

Il vantaggio teorico dei file * .ico è che sono contenitori che possono contenere più di un'icona. Ad esempio, è possibile memorizzare un'immagine con canale alfa e una versione a 16 colori per sistemi legacy, oppure è possibile aggiungere icone 32x32 e 48x48 (che verrebbero visualizzate quando si trascina un collegamento a Windows Explorer).

Questa buona idea, tuttavia, tende a scontrarsi con le implementazioni del browser.


A questo proposito è il fatto che IE9 usa anche quelle grandi icone per pin per la barra delle applicazioni win7 vedere: stackoverflow.com/questions/3723715/...
— GazB

Uhm, teorico? La stessa icona fornita con Windows 7 può essere utilizzata in Windows 95 in modalità colore a 8 bit. Penso che sia abbastanza pratico, no?
— Christian,

Si prega di notare che questa risposta è stata scritta nel 2009. La scena del browser in quel momento era molto diversa da quella attuale.
— Álvaro González,

15

PNG ha 2 vantaggi: ha dimensioni ridotte ed è più ampiamente utilizzato e supportato (tranne nel caso delle favicon). Come accennato prima di ICO, può avere icone di dimensioni multiple, che sono utili per le applicazioni desktop, ma non troppo per i siti Web. Ti consiglierei di mettere un favicon.ico nella radice della tua applicazione. Se hai accesso al capo delle pagine del tuo sito web usa il tag per puntare a un file png. Quindi il browser più vecchio mostrerà favicon.ico e quelli più recenti il ​​png.

Per creare file Png e Icon raccomanderei The Gimp .


3
Non tanto per i siti Web? Aspetta che tutti inizino a usare display simili a retina; improvvisamente ci sarà un ottimo motivo per cui si potrebbe includere una dimensione 32x32 o superiore nella loro favicon ...
— Roman Starkov

1
Stiamo parlando di favicons, quindi il problema del supporto è in realtà l'opposto di quello che dici
— David Heffernan,

1
+1 Risolve la domanda originale e non si impantana in trasparenza. Cita anche un app che fa disposizione di sostegno .ico.
— kovacsbv,

12

Alcuni strumenti social come Google+ utilizzano un metodo semplice per ottenere una favicon per i collegamenti esterni, recuperando http://tuo.dominioname.com/favicon.ico

Poiché non eseguono il prefetch del contenuto HTML, il <link>tag non funzionerà. In questo caso, potresti voler utilizzare una regola mod_rewrite o semplicemente posizionare il file nella posizione predefinita.


1
Non so se sia vero o falso, ma è stato l'argomento decisivo per me andare a creare favicon.ico in root oltre a png che ho.
— Alexei Tenitski,

2
Lo so dal lavoro su telly.com , -via Paul Lindner , che fa parte del team di Google Plus. plus.google.com/117259934788907243749/about
— jdavid.net

Posizionare la favicon nella radice è lo standard di fatto , quindi vorrei aderire ad essa per ragioni come menzionate in questa risposta.
— Stijn de Witt,

8

Un ico può essere un png.

Più precisamente, è possibile memorizzare uno o più png all'interno di questo formato contenitore minimo, invece della solita bitmap + alpha che tutti associano fortemente a ico.

Il supporto è vecchio, appare in Windows Vista (2007) ed è ben supportato dai browser, sebbene non necessariamente dal software di modifica delle icone.

Qualsiasi png valido (intero compreso l'intestazione) può essere anteposto da un'intestazione ico a 6 byte e da una directory di immagini a 16 byte.
GIMP ha il supporto nativo. Esporta semplicemente come ico e spunta "Compressed (PNG)".


3

Evitare PNG in ogni caso se si desidera una compatibilità IE6 affidabile.


19
Non c'è motivo per cui non sia possibile utilizzare entrambi: un ico nella struttura di directory per IE6 e un PNG specificato tramite un <link>codice nella pagina per i browser moderni.
— Ambra

10
Perché dovresti usare entrambi? Se hai intenzione di preoccuparti di creare un ico, quali benefici avrebbe anche usare un png? Sicuramente è solo un lavoro extra e un codice extra.
— Mr_Chimp,

@Mr_Chimp perché png è uno standard aperto e più lungimirante? È un'ulteriore linea di markup.
— Wyatt8740,

9
Ciao @Orcra - Penso che non lo troveresti così divertente se avessi letto questo ~ 8 anni fa quando ho scritto questa risposta e ho dovuto considerare cose come IE6 :) StackOverflow consente di modificare le risposte, quindi sentiti libero di aggiornarlo tu stesso qualcosa di rilevante oggi
— aehlke

3
@aehike hai ragione, mio ​​male per non aver controllato il timestamp.
— Orcra,

0

Per quello che vale, faccio questo:

    <!-- Favicon - Generic -->
    <link rel="icon" href="path/favicon-32_x_32.png" sizes="32x32">
    <link rel="icon" href="path/favicon-57_x_57.png" sizes="57x57">
    <link rel="icon" href="path/favicon-76_x_76.png" sizes="76x76">
    <link rel="icon" href="path/favicon-96_x_96.png" sizes="96x96">
    <link rel="icon" href="path/favicon-128_x_128.png" sizes="128x128">
    <link rel="icon" href="path/favicon-192_x_192.png" sizes="192x192">
    <link rel="icon" href="path/favicon-228_x_228.png" sizes="228x228">
    <!-- Favicon - Android -->
    <link rel="shortcut icon" href="path/favicon-196_x_196.png" sizes="196x196">
    <!-- Favicon - iOS -->
    <link rel="apple-touch-icon" href="path/favicon-120_x_120.png" sizes="120x120">
    <link rel="apple-touch-icon" href="path/favicon-152_x_152.png" sizes="152x152">
    <link rel="apple-touch-icon" href="path/favicon-180_x_180.png" sizes="180x180">

E tengo ancora il root favicon.ico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.