zoukankan      html  css  js  c++  java
  • Flash AS3 保存图片到本地

    核心提示:如果你想保存从视频,图表或表格中获取的图片数据到本地,可以使用BitmapData类。 
    
    原文地址:
    
    http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=8406
    
    如果你想保存从视频,图表或表格中获取的图片数据到本地,可以使用BitmapData类。
    
    摘要:
    
    使用BitmapData类来创建一个包含了从组件中获取的图片数据的对象,使用mx.graphics.codec包提供的方法编码为JPEG或PNG格式,然后使用AIR API提供的File和FileStream类保存到本地。
    
    具体方法:
    
    首先我们我们需要得到屏幕的截图,要做到这一点,我们要使用BitmapData类。比如我们想从一个命名为myChart的线状图表上获取截图:
    
    
    
    import flash.display.BitmapData;
    var bmpd:BitmapData = new BitmapData(myChart.width,myChart.height);
    bmpd.draw(myChart);
    
    
    
    然后我们需要把bitmapdata对象编译为ByteArray对象,这样我们就可以保存为文件了。这个ByteArray对象需要被格式化,我们可以使用mx.graphics.codec包中的JPEGEncoder和PNGEncoder类来实现它。
    
    编码为JPEG格式:
    
    
    
    import mx.graphics.codec.JPEGEncoder;
    //create a new instance of the encoder, and set the jpeg compression level from 0 to 100
    var jpgenc:JPEGEncoder = new JPEGEncoder(80);
    //encode the bitmapdata object and keep the encoded ByteArray
    var imgByteArray:ByteArray = jpgenc.encode(bmpd);
    
    
    
    编码为PNG格式:
    
    
    
    import mx.graphics.codec.JPEGEncoder;
    //create a new instance of the encoder
    var pngenc:PNGEncoder = new PNGEncoder();
    //encode the bitmapdata object and keep the encoded ByteArray
    var imgByteArray:ByteArray = pngenc.encode(bmpd);
    
    
    
    现在我们已经准备好了ByteArray数据,我们只需要把它保存到本地就可以了。我们可以用File和File Stream类来实现。
    
    建立一个JPEG文件参照:
    
    
    
    //gets a reference to a new empty jpg image file in user desktop
    var fl:File = File.desktopDirectory.resolvePath(”snapshot.jpg”);
    
    
    
    建立一个PNG文件参照:
    
    
    
    //gets a reference to a new empty jpg image file in user desktop
    var fl:File = File.desktopDirectory.resolvePath(”snapshot.png”);
    
    
    
    现在我们可以把ByteArray用File Stream保存到文件中。
    
    
    
    //Use a FileStream to save the bytearray as bytes to the new file
    var fs:FileStream = new FileStream();
    try{
    //open file in write mode
    fs.open(fl,FileMode.WRITE);
    //write bytes from the byte array
    fs.writeBytes(imgByteArray);
    //close the file
    fs.close();
    }catch(e:Error){
    trace(e.message);
    }
    

      

  • 相关阅读:
    IntelliJ IDEA 14.03 java 中文文本处理中的编码格式设置
    应聘感悟
    STL string分析
    CUDA SDK VolumeRender 分析 (1)
    BSP
    CUDA SDK VolumeRender 分析 (3)
    CUDA SDK VolumeRender 分析 (2)
    Windows软件发布时遇到的一些问题
    Ten Commandments of Egoless Programming (转载)
    复习下光照知识
  • 原文地址:https://www.cnblogs.com/sinsoul/p/2344146.html
Copyright © 2011-2022 走看看