2012-06-12 1 views
0

이미지의 픽셀을 480 X 480에서 30 X 30으로 줄여야합니다. 픽셀의 다운 샘플링이 필요하며 비트 맵 이미지에서 개별 픽셀을 제거 할 방법이 없습니다.다운 샘플 비트 맵 이미지 픽셀 actionscript 3?

나는 이미지 처리의 왜곡을 연구 중이기 때문에이 다운 샘플링이 필요합니다.

이 부분에 도움이 되시면 감사하겠습니다. 결과

+1

는 30x30 다음 픽셀을 멀리 빼기 위해 노력 반대로 새의 BitmapData에 해당하는 픽셀을 복사하거나 설정하는 알고리즘을 설정의 새로운의 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

관련 문제