我可以从canvas元素获取图像并在img src标签中使用它吗?

kas*_*rek 63 javascript html5 canvas image

是否有可能将画布元素中存在的图像转换为表示的图像img src

我需要在转换后裁剪图像并保存.还有,我发现在互联网上像一个视图功能:FileReader()或者ToBlop(),toDataURL(),getImageData(),但我不知道如何实现,并在JavaScript中正确地使用它们.

这是我的HTML:

<img src="http://picture.jpg" id="picture" style="display:none"/>
<tr>
    <td>
        <canvas id="transform_image"></canvas>
    </td>
</tr>
<tr>
    <td>
        <div id="image_for_crop">image from canvas</div>
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

在JavaScript中它应该看起来像这样:

$(document).ready(function() {
    img = document.getElementById('picture');
    canvas = document.getElementById('transform_image');

    if(!canvas || !canvas.getContext){
        canvas.parentNode.removeChild(canvas);
    } else {
        img.style.position = 'absolute';
    }
    transformImg(90);
    ShowImg(imgFile);
}

function transformImg(degree) {
    if (document.getElementById('transform_image')) {
        var Context = canvas.getContext('2d');
        var cx = 0, cy = 0;
        var picture = $('#picture');
        var displayedImg = {
            width: picture.width(),
            height: picture.height()
        };   
        var cw = displayedImg.width, ch = displayedImg.height
        Context.rotate(degree * Math.PI / 180);
        Context.drawImage(img, cx, cy, cw, ch);
    }
}

function showImg(imgFile) {
    if (!imgFile.type.match(/image.*/))
    return;

    var img = document.createElement("img"); // creat img object
    img.id = "pic"; //I need set some id
    img.src = imgFile; // my picture representing by src
    document.getElementById('image_for_crop').appendChild(img); //my image for crop
}
Run Code Online (Sandbox Code Playgroud)

如何img src在此脚本中将canvas元素更改为图像?(此脚本中可能存在一些错误.)

Zet*_*eta 80

canvas.toDataURL()将为您提供一个可用作来源的数据网址:

var image = new Image();
image.id = "pic";
image.src = canvas.toDataURL();
document.getElementById('image_for_crop').appendChild(image);
Run Code Online (Sandbox Code Playgroud)

也可以看看:


hon*_*let 7

做这个.在关闭body标签之前将其添加到文档的底部.

<script>
    function canvasToImg() {
      var canvas = document.getElementById("yourCanvasID");
      var ctx=canvas.getContext("2d");
      //draw a red box
      ctx.fillStyle="#FF0000";
      ctx.fillRect(10,10,30,30);

      var url = canvas.toDataURL();

      var newImg = document.createElement("img"); // create img tag
      newImg.src = url;
      document.body.appendChild(newImg); // add to end of your document
    }

    canvasToImg(); //execute the function
</script>
Run Code Online (Sandbox Code Playgroud)

当然,在你的doc中的某个地方,你需要它会抓取的canvas标签.

<canvas id="yourCanvasID" />
Run Code Online (Sandbox Code Playgroud)