我正在使用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
答案 0 :(得分: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);