2012-11-16 16 views
26

Daha önce bir tuval öğesinden elde edilen imageData'dan yeni bir Görüntü oluşturmanın herhangi bir yolu olup olmadığını bilmek ister misiniz?javascript'te imageData'den bir Görüntü nasıl oluşturulur?

Bir çözüm aradım ama sonuçta sonuç bir tuvale çiziliyor gibi görünüyor. Temel olarak, mümkün ise bir ImageData nesnesini doğrudan Görüntü'ye dönüştürmenin bir yoluna ihtiyacım var. Bu varsayarsak

+1

http://stackoverflow.com/questions/923885/capture-html-canvas-as-gif-jpg-png-pdf –

+0

harika görün! tam olarak aradığım şey. – YemSalat

cevap

23

kullanabilirsiniz toDataURL Tuval içinde yöntemi. Veri URI'si olarak görüntü verileri oluşturur.

var canvas = document.createElement("canvas"); 
canvas.width = 100; 
canvas.height = 100; 
var ctx = canvas.getContext("2d"); 
ctx.fillStyle = "red"; 
ctx.fillRect(0, 0, 100, 100); 

var img = document.createElement("img"); 
img.src = canvas.toDataURL("image/png"); 
document.body.appendChild(img); 

Eğer kullanıcının tarayıcısını tanımak istiyorsanız, Veri URI Şemasını destekler, bu işlevi kullanabilirsiniz. Imagedata'nın Görüntü alma - bu konuda sunuldu önceki cevapların

function useSafeDataURI(success, fail) { 
    var img = document.createElement("img"); 

    img.onerror = function() { 
     fail(); 
    }; 
    img.onload = function() { 
     success(); 
    }; 

    img.src = "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; // insert a dot image contains 1px. 
} 
+3

Belki yanılıyor ama soru tam tersini sormuyor mu? ImageData nesnesinden nasıl görüntü alınır? –

+0

Bir [fiddle] (http://jsfiddle.net/zameeramir/p1twjL7k/) için aynı oluşturuldu – xameeramir

7

Sen Ardından koyabilirsiniz

var imgData = document.getElementById('mycanvas').toDataURL(); 

kullanarak görüntünün bir temsilini alabilirsiniz tuvalinizi

<canvas id='mycanvas'></canvas> 

olduğunu kaynak değiştirerek düzenli resim etiketinde

<img id='myimage'/> 

document.getElementById('myimage').src = imgData; 
14

Yok soruya bir yanıt sağlar. İşte bir çözüm.

function imagedata_to_image(imagedata) { 
    var canvas = document.createElement('canvas'); 
    var ctx = canvas.getContext('2d'); 
    canvas.width = imagedata.width; 
    canvas.height = imagedata.height; 
    ctx.putImageData(imagedata, 0, 0); 

    var image = new Image(); 
    image.src = canvas.toDataURL(); 
    return image; 
} 
İlgili konular