2012-11-16 2 views
26

이전에 canvas 요소에서 가져온 imageData에서 새 Image를 만드는 방법이 있는지 알고 싶습니다.javascript에서 imageData에서 이미지를 생성하는 방법은 무엇입니까?

나는 해결책을 찾았지만 결과는 전부 캔버스에 그려지는 것처럼 보입니다. 기본적으로 가능한 경우 ImageData 객체를 Image로 직접 변환하는 방법이 필요합니다. 이 가정

+1

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

+0

큰보세요! 정확히 내가 무엇을 찾고 있었는지. – YemSalat

답변

23

사용할 수 toDataURL 캔버스에 방법. 이미지 데이터를 데이터 URI로 만듭니다.

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); 

사용자의 브라우저에서 데이터 URI 스키마를 지원하는지 알고 싶다면이 기능을 사용할 수 있습니다. imageData의에서 이미지를 얻기 -이 주제에 제시되었을 때 이전 답변의

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

어쩌면 내가 틀렸을 지 모르지만 그 질문에 반대하지 않습니까? ImageData 객체에서 이미지를 가져 오는 방법은 무엇입니까? –

+0

같은 것을 위해 [피들] (http://jsfiddle.net/zameeramir/p1twjL7k/)을 만들었습니다. – xameeramir

7

당신은 당신은 다음 넣을 수

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

사용하여 이미지의 표현을 얻을 수있는 캔버스

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

입니다 소스 변경하여 일반 이미지 태그에서

<img id='myimage'/> 

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

없음 질문에 대한 답변을 제공하지 않습니다. 그래서 여기에 해결책이 있습니다.

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; 
} 
관련 문제