2012-04-15 2 views
20

Allo scopo di manipolare più facilmente varie immagini sul lato client con Javascript, ho scritto una funzione sul lato server (in VB 2010) per convertire un file in una stringa base64 che invio al client.Visualizzazione immagini di Internet Explorer e Base64

Quando l'ho provato in Internet Explorer 8.0 con 3 immagini diverse, 1 ritratto e 2 paesaggi, mi sono reso conto che solo l'immagine verticale veniva visualizzata interamente, nel frattempo entrambe le immagini del paesaggio erano troncate (posso vedere solo la parte superiore del Immagine).

Pensavo di avere un bug nella mia funzione di conversione, fino a quando non ho provato la mia pagina locale con Firefox: ogni immagine è perfettamente visualizzata da Firefox.

Quindi, c'è una mia domanda: si tratta di un bug noto di Internet Explorer? Se la risposta è sì, esiste un rimedio ben noto per quel bug noto?

+3

Link alla tua pagina di test? – Marcel

+3

Questo è un bug ben noto, IE ha un limite di caratteri imposto su tutti gli URI, il che significa che gli URI dello schema dati avranno alcuni contenuti troncati. –

+0

Oltre al commento di Andrew Dunn, è meglio usare un file system o un database (come SQL 2008 dedicato alle immagini). Non penso che ti avvicinerai alla compressione di protocolli come jpg, gif, png. Inoltre ho trovato che usare un Virtual Path Provider per servire immagini da un dB è molto più lento di un file system, quindi consiglio di ripensare il tuo design. –

risposta

14

IE8 può eseguire solo immagini URI Base64 fino a 32 kb di dimensione. È una limitazione marginalmente fastidiosa, ma puoi ancora cavartela con le icone/ecc. Tieni presente che le immagini codificate Base64 sono in media il 33% in più di dati inviati in pipe, quindi è ... eh, sai, usa il tuo giudizio.

Per chiunque sia interessato, è anche possibile fare questi lavori in IE6/7 (senza, mi permetto di aggiungere, tale limite 32kb ...): http://venodesigns.net/2010/06/17/you-got-your-base64-in-my-css/

+0

grazie per la tua risposta. Bene intendi che la codifica base64 è inutile nel mio caso? Potrei semplicemente mandare l'immagine jpeg come una semplice stringa e dichiarare quella stringa come faccio per base64, sostituendo semplicemente "BB

4

IE8 è limitata a 32 KB. Un modo per aggirare questo è solo servire le immagini in 'piastrelle' dove ogni tessera è inferiore a 32 KB.