【问题标题】:fabric.js - create Image object from ImageData object of canvas APIfabric.js - 从 canvas API 的 ImageData 对象创建 Image 对象
【发布时间】:2013-09-18 21:57:04
【问题描述】:

我想在fabric.js中从ImageData对象创建一个图像对象,我们可以从中获取ImageData:

var imgData=ctx.getImageData(10,10,50,50);
//ctx.putImageData(imgData,10,70);

// something liket that
var image = new fabric.Image.fromImageData (...);

有没有办法从ImageData 对象创建图像对象?

【问题讨论】:

  • 只是我想裁剪一张图片,并从fabric.js中的数据创建一个新的图片对象..
  • 我有办法创建另一个画布,但是不优雅,我觉得还是直接做比较好。

标签: javascript canvas fabricjs


【解决方案1】:

让我把我的想法放在这里,我不喜欢这种方式但周围没有其他人-

var ctx = canvas.getContext('2d');
var data = ctx.getImageData(0, 0, 20, 20);

var c = document.createElement('canvas');

c.setAttribute('id', '_temp_canvas');
c.width = 20;
c.height = 20;

c.getContext('2d').putImageData(data, 0, 0);

fabric.Image.fromURL(c.toDataURL(), function(img) {
    img.left = 50;
    img.top = 50;
    canvas.add(img);
    img.bringToFront();
    c = null;
    $('#_temp_canvas').remove();
    canvas.renderAll();
});

【讨论】:

  • 我刚刚在toDataURL 中推送了裁剪支持(一直想这样做)-github.com/kangax/fabric.js/commit/… 所以你现在可以在织物画布上绘制图像,然后通过canvas.toDataURL({ left: ..., top: ..., width: ..., height: ... }) 获取数据进行裁剪网址。当然,该数据 url 可用于创建新图像。
  • @kangax 解决了裁剪问题,但不适用于像素操作,例如图像饱和度。
猜你喜欢
  • 1970-01-01
  • 2012-11-17
  • 2017-10-13
  • 2021-09-11
  • 2018-05-25
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 2011-03-08
相关资源
最近更新 更多