2016-03-02 75 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)插件 –