我可以打开浏览器窗口来查看flex 3应用程序创建的图像吗?

时间:2009-08-26 16:29:17

标签: flex flex3

我有一个flex 3应用程序,可以从用户绘制的画布创建一个Image。我使用ImageSnapshot类来创建图像

var imageSnap:ImageSnapshot=ImageSnapshot.captureImage(myCanvas);
            var imageByteArray:ByteArray=imageSnap.data as ByteArray;

我希望用户能够打印或保存图像。我可以使用以下代码打印图像,但flex不能很好地控制多页打印

var printJob:FlexPrintJob=new FlexPrintJob();
                printJob.start();
                printJob.addObject(myCanvas, FlexPrintJobScaleType.SHOW_ALL);

我想在浏览器窗口中显示图像,以便用户可以使用内置浏览器功能进行打印,或者右键单击图像并保存。这可以在不请求服务器端代码的情况下完成吗? 我知道flash player 10和flex 4允许你在本地保存文件但是现在我被玩家9和flex 3卡住了

3 个答案:

答案 0 :(得分:0)

我不相信你能做到这一点,因为它会侵犯沙箱。例如,如果这有效,则意味着您可以在未经用户同意或不知情的情况下在用户的计算机上放置任意代码(类似于图像)。

答案 1 :(得分:0)

我不确定这是否有效,但请尝试一下:

显示图像的链接(file://path/to/image/img.ext)并设置window.htmlLoader.navigateInSystemBrowser = true;

答案 2 :(得分:0)

只要应用程序在Flash Player 10中运行,您仍然可以在Flex 3中使用FileReference的新功能(save()和load()方法)。但如果您肯定会遇到Flash Player 9,那么您将需要先将图像推送到服务器。如果您正在寻找将数据推送到服务器的好方法,请在此问题中引用我的解决方案:

Flex: Render an unrealized UIComponent to BitmapData?