Il supporto del browser per i formati di output delle immagini dipende in gran parte dall'implementazione. Ecco the most relevant sentence in the WHATWG living standard:
I programmi utente devono supportare PNG ("image/png
"). I programmi utente possono supportare altri tipi. Se l'agente utente non supporta il tipo richiesto, deve creare il file utilizzando il formato PNG.
PNG è richiesto; tutti gli altri formati sono opzionali. Questo è spiegato in generale nel standard's toDataURL
description:
canvas . toDataURL([ type, ... ])
Restituisce un URL data:
per l'immagine nella tela.
Il primo argomento, se fornito, controlla il tipo di immagine da restituire (ad esempio PNG o JPEG). Il valore predefinito è image/png
; quel tipo viene anche usato se il tipo dato non è supportato. Gli altri argomenti sono specifici per il tipo e controllano il modo in cui l'immagine viene generata, come indicato nella tabella seguente.
Le specifiche contains a table as mentioned above, ma ha solo una voce:
Argomenti per i metodi di serializzazione
Type Other arguments
image/jpeg The second argument, if it is a number in the range 0.0 to
1.0 inclusive, must be treated as the desired quality level.
If it is not a number or is outside that range, the user
agent must use its default value, as if the argument had
been omitted.
Quindi, possiamo vedere che PNG è esplicitamente richiesto come il predefinito e JPEG deve supportare un argomento di qualità se il browser sceglie di supportare JPEG. In futuro, ad eccezione della comunità degli standard Web, potrei aggiungere più voci a quella tabella, al fine di specificare argomenti standard per i fornitori che scelgono di supportare i tipi di immagine opzionali.
Le specifiche suggerisce come eseguire il test per il supporto di un browser di qualsiasi formato particolare (ma purtroppo non come ottenere tutti i formati supportati, ad esempio, come una lista):
Quando si cerca di utilizzare i tipi di altri di "image/png
", gli autori possono controllare se l'immagine è stata effettivamente restituita nel formato richiesto controllando se la stringa restituita inizia con una delle stringhe esatte "data:image/png,
" o "data:image/png;
".
C'è una nota aggiuntiva sul supporto del browser opzionale:
Per esempio, il valore "image/png
" significherebbe per generare un'immagine PNG, il valore "image/jpeg
" significherebbe per generare un'immagine JPEG , e il valore "image/svg+xml
" significherebbe generare un'immagine SVG (che richiederebbe che l'utente interpreti come è stata generata la bitmap, una caratteristica improbabile, sebbene potenzialmente impressionante).
lascia questo chiaramente una vasta gamma di consentiti formati, ma solo uno Formato richiesto.
Se un browser supporta un particolare formato di serializzazione delle immagini è puramente fino a ciascun browser.
Indovina dipende dalla applicazione browser. I documenti MSDN dicono che tipicamente 'image/png' o' image/jpeg' - quindi possiamo supporre che siano quelli validi in MSIE. – techfoobar
La specifica menziona solo PNG e JPEG, ma la formulazione non sembra esplicitamente restrittiva. – Pointy
Anche le specifiche dicono che è possibile chiedere tutto ciò che si desidera, e quindi se il runtime non lo fa, si ottiene di nuovo il PNG (e si può determinare se questo è il caso esaminando la stringa restituita). – Pointy