2013-09-14 2 views
3

Я хочу, чтобы создать объект изображения в fabric.js от ImageData объекта, мы можем получить ImageData от этого:fabric.js - создать изображение объекта из ImageData объекта холста API

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

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

Есть ли способ создать объект изображения с объекта ImageData?

+0

Просто я хочу, чтобы обрезать изображение, и создать новый объект изображения из его данных в ткани. js .. – Tom

+0

У меня есть способ создать еще один холст, но он не изящный, я думаю, что лучше сделать это напрямую. – Tom

ответ

7

Позвольте мне поставить свою идею здесь, мне не нравится этот путь, но нет других вокруг -

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(); 
}); 
+4

Я просто подтолкнул поддержку обрезки в 'toDataURL' (это означало сделать это некоторое время) - https://github.com/kangax/fabric.js/commit/c1a818ac33e3927386e792366f3e7bd3abf9aef6, чтобы вы могли теперь нарисовать изображение на полотне ткани, затем обрезать это через 'canvas.toDataURL ({left: ..., top: ..., width: ..., height: ...})' получение URL-адреса данных. Разумеется, этот URL-адрес данных может быть использован для создания нового изображения. – kangax

+0

Спасибо, очень приятно. – Tom

+0

@kangax, который решает проблему для обрезки, но не для манипуляции пикселями, например. насыщенность изображения. – JDrake

Смежные вопросы