vini123

博客园 首页 新随笔 联系 订阅 管理

  如何将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");

 

http://blog.vini123.com/609.html

posted on 2013-11-05 12:49  黑夜丶残枫  阅读(1730)  评论(0)    收藏  举报