2016-03-02 72 views
0

我使用暗室脚本来操纵图像,我试图添加一个自定义插件,图像应该颠倒,但我没有获得成功。用画布翻转图像,DarkRoom

我的插件的代码是这样

function() { 
    "use strict"; 
    var Flip = Darkroom.Transformation.extend({ 
     applyTransformation: function(canvas, img, next) { 
      var ctx = canvas.getContext('2d'); 
      ctx.scale(-1, 1) //not flip, whyy?? 
     } 
    }); 
    Darkroom.plugins.flip = Darkroom.Plugin.extend({ 
     initialize: function() { 
      var buttonGroup = this.darkroom.toolbar.createButtonGroup(), 
       flipButton = buttonGroup.createButton({ 
        image: "flip" 
       }); 
      flipButton.addEventListener("click", this.flip.bind(this)) 
     }, 
     flip: function() { 
      this.darkroom.applyTransformation(new Flip()) 
     } 
    }) 
}() 

为什么不翻?什么即时做错了?

回答

1

你不需要用帆布背景下工作,因为基于FabricJS暗室可以setFlipX您的图像有:

var Flip = Darkroom.Transformation.extend({ 
    applyTransformation: function(canvas, image, next) { 
    image.setFlipX(!image.getFlipX()); 
    // do not forget to call next() 
    next(); 
    } 
}); 

ctx.scale(-1, 1)只是改变matrix of translation并不会改变任何东西。

+0

非常感谢你! – user3715916

+0

你能帮助我吗?我的插件可以绘制作品,但不能保存,请参阅:http://pastebin.com/s65ZJkMh – user3715916

+0

如果要在画布上绘制,它不应该是“转换”,而应该是“插件”。你可以看一下[demo](http://mattketmo.github.io/darkroomjs/)和[crop]的源代码(https://github.com/MattKetmo/darkroomjs/blob/master/lib/ js/plugins/darkroom.crop.js)插件 –