2012-09-22 28 views
0

我有一個BitmapImage的和我申請一個ShaderFilter它:與過濾器轉換的BitmapImage到的BitmapData

  var bm:BitmapImage = new BitmapImage(); 
      bm.source = resizedBitmapData; 
      bm.filters = [filter]; 

我試過的BitmapImage複製到一個更大的圖像疊加:

  bm.addEventListener(FlexEvent.READY, function (event:*):void { 
       var bmd:BitmapData = bm.bitmapData; 
       backgroundBitmap.bitmapData.copyPixels(bmd, 
        new Rectangle(0, 0, bmd.width, bmd.height), 
        location);   
      }); 

它的工作,但「bmd」包含的是應用濾鏡之前的原始圖像。我想要的是在應用過濾器後獲取最終的圖像。這可能嗎?

我正在嘗試ImageSnapshot.captureBitmapData(),但BitmapImage似乎不是一個IBitmapDrawable。

回答

1

我會嘗試將它添加到一個精靈,然後渲染精靈,如果你的方法是不是媒體鏈接工作...

var helper:Sprite = new Sprite(); 
helper.addChild(bm); 
var bmd:BitmapData = new BitmapData(bm.width,bm.height); 
bmd.draw(helper); 
backgroundBitmap.bitmapData.copyPixels(helper, 
     new Rectangle(0, 0, helper.width, helper.height),location); 

有你反正檢查過濾器應用,並呈現與想要的結果? ;)

+0

attrib「helper.bitmapData」似乎不存在。當屏幕上顯示時,過濾器工作得很好。該過濾器是ShaderFilter。 – StephenNYC

+0

對不起快速拍攝..繪製()方法應該做 – Sidrich2009

+1

順便說一句你有沒有使用任何displayobjects的原因? – Sidrich2009