如何将swf里边的Bitmap或矢量图(简称显示对象,因为看得见,摸不着。可以裁剪,变形,旋转等等)生成本地的图片呢。这个
分两种情况,一种是在AIR运行时下,一种是在FlashPlayer下。在AIR运行时下,通过FileStream的writeBytes方法,将ByteArray
写入到本地。如果在FlashPlayer下,则用FileReference的save方法,将ByteArray写入到本地。所以,这个时候,需要将显示对象
编码成需要的ByteArray。这个转化不仅仅数据的转化,而是按照一定的压缩算法的转化(在Flashplayer11.3出现之前,大多利用第
三方类库PNGEnocder来处理的)。因此BitmapData的encode就有作用了。该API返回按照定义的压缩算法写入的ByteArray或直接
按照定义的压缩算法写入ByteArray。
 flash.display.BitmapData.encode(rect:Rectangle, compressor:Object, byteArray:ByteArray=null):ByteArray
参数:
  rect 要压缩的 BitmapData 对象的区域。
  compressor 要使用的压缩程序类型。有效值为:
     flash.display.PNGEncoderOptions、
     flash.display.JPEGEncoderOptions 和 flash.display.JPEGXREncoderOptions。
       byteArray 保存编码图像的输出 ByteArray。
  
至于如何将其他显示对象转换成BitmapData就不说了。下边分别写出在AIR下和在FlashPlayer下,将BitmapData生成图片的具体
的代码。
AIR下:
                var bitmapData:BitmapData = boxList[i].bitmap.bitmapData;   //这里从一个列表里边取的一个BitmapData 
                var jpegEncoderOptions:JPEGEncoderOptions = new JPEGEncoderOptions(80);
                var byteArray:ByteArray = bitmapData.encode(bitmapData.rect,jpegEncoderOptions);
       //或 bitmapData.encode(bitmapData.rect,jpegEncoderOptions,byteArray);
                
                var file:File = File.desktopDirectory;  //这里写死了,可以使用File的browse选择你要保存的路径
                file = file.resolvePath(file.nativePath + "/image/" + "vini123.jpg");
                var fs:FileStream = new FileStream();
                fs.open(file,FileMode.WRITE);
                fs.writeBytes(byteArray);
                fs.close();
FlashPlayer下:
              var bitmapData:BitmapData = bitmap.bitmapData;
              var jpegEncoderOptions:JPEGEncoderOptions = new JPEGEncoderOptions(80);
              var byteArray:ByteArray = bitmapData.encode(bitmapData.rect,jpegEncoderOptions);
    
              var file:FileReference = new FileReference();
              file.save(byteArray,"vini123.jpg");
 
                    
                     
                    
                 
                    
                 
                
 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号