2012-06-12 69 views
0

我需要在圖像,以降低像素從480 X 480至30×30。這需要像素的下采樣,我沒有看到任何方法以除去位圖圖像的各個像素。縮放採樣位圖圖像像素actionscript 3?

我需要這個採樣,因爲我學習失真圖像處理 - 在短暫的一面。

任何幫助,在此,將不勝感激。

+1

有隻使一個新的BitmapData這是30×30,然後設置你的算法對新的BitmapData複製或設置相應的像素,而不是試圖減去離開像素的問題從最初的一個? – shaunhusain

+0

謝謝,我會盡力做到這一點。我只專注於一種解決方案。 –

回答

1
package 
{ 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.Loader; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.geom.Matrix; 
    import flash.net.URLRequest; 

    public class DownSampling extends Sprite 
    { 
     private var _loader : Loader; 
     public function DownSampling() 
     { 
      _loader = new Loader; 
      _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImgLoaded); 

      // Get the bitmap 
      _loader.load(new URLRequest("https://appharbor.com/assets/images/stackoverflow-logo.png")); 
     } 

     private function onImgLoaded(e : Event) : void 
     { 
      var currentBitmapdata : BitmapData = Bitmap(_loader.content).bitmapData; 
      var i : uint = 9; 
      var downFactor : Number = 0.2; 

      // this will reduce size by 20% 
      var downMat : Matrix = new Matrix; 
      downMat.scale(1 - downFactor, 1 - downFactor); 

      while(--i) 
      { 
       // Create new bitmapdata but smaller 
       var smallerImg : BitmapData = new BitmapData(currentBitmapdata.width * (1-downFactor), currentBitmapdata.height * (1-downFactor), true, 0); 

       // Copy and apply scale 
       smallerImg.draw(currentBitmapdata, downMat); 

       // Add to stage and set alpha to 50% 
       addChild(new Bitmap(smallerImg)).alpha = .5; 

       // Apply the same transform next loop 
       currentBitmapdata = smallerImg; 
      } 
     } 

    } 
} 

結果: Script result : downSampling