2

ImageSnapshot.captureImage()メソッドを使用して、高さ2305ピクセル、幅1134ピクセルのマップ画像をスクリーンキャプチャしています。次に、その画像を高さ1100ピクセル、幅775ピクセルの画像にクリップしようとしています。

            public function grabScreenMapImage2():void {
            // use ppi of 100 for testing
            var ppi = 100;
            var mapHeightInPixels = 1100
            var mapWidthInPixels = 775

            var snapImage:ImageSnapshot = ImageSnapshot.captureImage(myMap, ppi, new JPEGEncoder());

            var bitmapData:BitmapData = new BitmapData(mapWidthInPixels, mapHeightInPixels);    

            var pixels:ByteArray = new ByteArray();
            pixels = snapImage.data;
            pixels.position = 0; 

            var clipRect:Rectangle = new Rectangle(0,0,mapWidthInPixels, mapHeightInPixels);

            bitmapData.setPixels(clipRect, pixels);

        }

ただし、エラー#2030が発生します。setPixels()の呼び出しでファイルの終わりが検出されたため、一生の間、その理由を理解できません。

どんな助けでも大歓迎です!

ありがとう、

DrBacchus

4

1 に答える 1

1

これは私のために働きます。元のビットマップを拡大してから、古い画像と同じサイズの新しい画像に切り抜きます。

var myScaleFactor:Number = 1/3;
var zoomArea:Rectangle = bitmapData.rect;
zoomArea.inflate(zoomArea.width * imageScale, zoomArea.height * myScaleFactor);
var croppedImage = new BitmapData(zoomArea.width ,zoomArea.height,false,0xCCCCCC);
croppedImage.copyPixels(imageData,zoomArea,new Point(0,0));
var newImage = new BitmapAsset(croppedImage);
于 2011-02-26T15:27:59.597 に答える