2011-01-31 12 views
10

Javascript değişkeninde görüntü verilere (JPEG veya PNG) sahibim. Resmi bir HTML belgesinde nasıl görüntülerim? Bunlar çok büyük resimler ve URI çok uzun olduğu için bu işe yaramazsa gibi kod şunlardır:Javascript değişkenindeki verilerden HTML görüntüsü oluşturma

// doesn't work because the URI is too long 
$('img#target').attr('src', 'data:...'); 

tuval kullanarak muhtemelen cevaptır ama görüntü verileri ile yüklemek anlamaya olamaz.

Merak ediyorsanız: hayır, görüntü verilerini doğrudan img etiketine indiremiyorum. Şifreli sunucudan geldi ve tarayıcıda Javascript kullanılarak şifresi çözüldü.

sayesinde
- Sanat Z.

+3

Her iki veri URI'sı ve tuval her yerde tamamen desteklenmez. Görüntüyü şifrelemeyi yapan ve normal bir görüntü olarak sunan bir sunucu aracılığıyla proxy'ye ne dersiniz? – deceze

cevap

8

bir tuval üzerinde çizmek için bir veri URL kullanmak için: this question/answer Başına

var img = new Image; 
img.onload = function(){ 
    myCanvasContext.drawImage(img,0,0); 
}; 
img.src = "data:..."; 

Eğer src önce onload set emin olun.

"URI çok uzun" diyorsunuz, ancak bununla ne demek istediğiniz belli değil. Sadece IE8'in veri URI'sinde 32kB sınırı vardır; diğer tarayıcılar için iyi çalışması gerekir. Bir hata yaşıyorsanız, lütfen açıklayın.

+0

Bunlar büyük resimlerdir. Örneğin, verilerin 1MB uzunluğunda veya daha fazla olduğu bir img.src = "data: ..." olabilir mi? (IE8'i desteklememek için sorun yok.) –

+0

@ArtZ Evet, bu iyi çalışıyor. Test etmek, düzeltmek kolay mı? – Phrogz

+0

@Phogz Evet, haklısınız. Tüm ama IE çalışır. Verdiğim sorunlar, iş akışında daha önce karışmış olan verilerden kaynaklanmış gibi görünüyor. Böcek için başka yerlere bakmam için beni cesaretlendirdiğin için teşekkürler. –

4

O

$('img#target').attr('src', 'data:...'); 

tüm IE haricinde çalışır çıkıyor. Sorunum başka bir yerden kaynaklandı.