Fabric.js でカスタム フィルターを作成しようとしています。でも、Caman.jsのフィルターセットを使いたいです。私はここに非常に近づいているように感じますが、これを機能させることができないようです. ここでどこが間違っているのでしょうか?
コンソール エラーはありません。putImageData
現在、Caman.js からレンダリングされた新しいデータでを設定しようとしていますが、今のところうまくいきません。ただし、コンソールでデータを見ることができます。
(function(global) {
'use strict';
var fabric = global.fabric || (global.fabric = { });
/**
* Lomo filter for fabricjs
* Example:
* obj.filters.push(new fabric.Image.filters.Lomo(6));
* obj.applyFilters(canvas.renderAll.bind(canvas));
*/
fabric.Image.filters.Lomo = fabric.util.createClass(fabric.Image.filters.BaseFilter, {
/**
* Filter type
* @param {String} type
* @default
*/
type: 'Lomo',
/**
* Applies filter to canvas element
* @memberOf fabric.Image.filters.Lomo.prototype
* @param {Object} canvas element to apply filter to
*/
applyTo: function(canvas) {
var context = canvas.getContext("2d");
var width = canvas.width;
var height = canvas.height;
var imageData = context.getImageData(0, 0, width, height);
var c = Caman(canvas, function(value) {
this.lomo().render();
});
Caman.Event.listen(c, 'processComplete', function(job) {
console.log(this.imageData);
context.putImageData(this.imageData, 0, 0);
});
}
});
fabric.Image.filters.Lomo.fromObject = function(object) {
return new fabric.Image.filters.Lomo(object);
};
})(typeof exports !== 'undefined' ? exports : this);