2015-02-16 10 views
13
canvas.toDataURL(type, encoderOptions); 

MDN 's descrizione del tipo di parametrodice quanto segue:Quali sono i possibili tipi di dati per la funzione canvas toDataURL()?

tipoopzionale
Un DOMString che indica il formato dell'immagine. Il tipo predefinito è image/png.

Devo ancora trovare tutti i tipi, poiché sto cercando di valutare cosa è possibile utilizzare in diversi casi.

Modifica: MSDN's article su toDataURL() non è di grande aiuto.


che so di quanto segue:

  • image/png qualità (opzioni encoder) non sembra influenzare l'uscita
  • image/jpeg qualità (opzioni encoder) influenza uscita
  • image/webp uscita influenze di qualità . (Solo Chrome secondo MDN).

Ma dopo aver guardato intorno non riesco a trovare un elenco di possibili tipi e le loro opzioni di codifica ... questo è praticamente tutto quello che ho potuto trovare. Quali sono le altre possibilità?

+0

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

+2

La specifica menziona solo PNG e JPEG, ma la formulazione non sembra esplicitamente restrittiva. – Pointy

+0

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

risposta

3

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.

9

Per il firefoxsource code, che sembra sostenere:

  • png
  • jpeg
  • ico
  • bmp

Chrome per il source code, dovrebbe sostenere :

  • WebP
  • png
  • jpeg
  • bmp

Internet Explorer versioni moderne, dovrebbe essere simili a Firefox (incrocio le dita).

Se ho bisogno di votare i "per oggi" opzioni disponibili, io andrò con: PNG, JPEG e BMP

Qualità influenze opzioni:

  • JPEG, qualità per cento, in cui 0 è 0%, 0.5 è il 50% e 1% 100
  • BMP, BPP, byte per pixel (grazie a @apsillers per segnalare)
Problemi correlati