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() 时遇到文件结尾,并且我终生无法找出原因。

非常感谢任何帮助!

谢谢,

巴克斯博士

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 回答