【问题标题】:Full Flex Display Object to Image完全 Flex 显示对象到图像
【发布时间】:2011-08-10 12:23:52
【问题描述】:

我需要生成一个显示到图像中的 UIComponent。我正在使用 PNGEncoder 和 JPEGEncoder 来生成图像。

var bd:BitmapData = new BitmapData(uiComp.measuredWidth,uiComp.measuredHeight);
bd.draw(uiComp, new Matrix()); 
var bitmap:Bitmap = new Bitmap(bd); 
bytes = jpgenc.encode(bd);  

代码在正常情况下运行良好。但是问题出现在低分辨率屏幕上,如果画布有滚动条,只有显示的内容,我的意思是省略滚动位置下方的内容。有什么方法可以将整个画布完全转换为图像,即使它有滚动条!请帮忙!

干杯,PK

【问题讨论】:

    标签: actionscript-3 apache-flex flex3


    【解决方案1】:

    我认为ImageSnapshot即使组件被截断或者即使它的visible属性设置为false也可以截图。

    import mx.core.IUIComponent;
    import mx.graphics.ImageSnapshot;
    
    private function takeSnapshot(source:IBitmapDrawable):void {
        var imageSnap:ImageSnapshot = ImageSnapshot.captureImage(source);
        var imageByteArray:ByteArray = imageSnap.data as ByteArray;
        swfLoader.load(imageByteArray);
    }
    

    【讨论】:

    • 感谢 KreeK。但是你知道如何将这个字节数组与 JPEGEncoder 或 PNGEncoder 集成。 JPEGEncoder 有 encodeByteArray 方法,但这给了我错误 #2030:文件结尾遇到错误。 :-(
    • 这家伙有一个转到 JPG 或 PNG 的示例,我认为您应该能够发布该数据并在后端另存为文件。 blog.flexexamples.com/2007/12/07/…
    【解决方案2】:

    使用带有PNGEncoder的Imagesnap我能够得到带有压缩的截图

    import flash.filesystem.FileStream;
    import flash.filesystem.File;
    import flash.filesystem.FileMode;
    import mx.graphics.ImageSnapshot;
    import mx.graphics.codec.PNGEncoder;
    

    ... ... ... ...

    ImageSnapshot.defaultEncoder = PNGEncoder;
    var imageSnap:ImageSnapshot = ImageSnapshot.captureImage(FlexGlobals.topLevelApplication as IBitmapDrawable);
    var stream:FileStream = openStream("screenshot.png");
    stream.writeBytes(imageSnap.data);
    stream.close();
    

    ... ... ... ...

    private static function openStream(fileName:String):FileStream
        {
            var file:File = File.documentsDirectory.resolvePath(fileName);
            var stream:FileStream = new FileStream();
            stream.open(file, FileMode.WRITE);
            return stream;
        }
    

    【讨论】:

      猜你喜欢
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多