【问题标题】:Can I open a browser window to view an image created by a flex 3 application?我可以打开浏览器窗口来查看由 flex 3 应用程序创建的图像吗?
【发布时间】:2009-08-26 16:29:17
【问题描述】:

我有一个 flex 3 应用程序,它从用户绘制的画布创建图像。我使用 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 允许您在本地保存文件,但现在我坚持使用 player 9 和 flex 3

【问题讨论】:

    标签: apache-flex flex3


    【解决方案1】:

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

    Flex: Render an unrealized UIComponent to BitmapData?

    【讨论】:

    • 我们做了类似的事情,以 .csv 格式保存另一个项目的报告。在这种情况下,我试图避免往返服务器
    • 您是否有一个示例 php 文件可以将图像回显到客户端进行保存?
    【解决方案2】:

    我不相信你可以这样做,因为它会违反沙盒。例如,如果这有效,则意味着您可以在未经用户同意或不知情的情况下将任意代码(类似于图像)放在用户的机器上。

    【讨论】:

    • 如果他们可以在新的浏览器窗口中查看图像,然后选择如何处理它,那就不是没有他们的同意
    • 没错,但我的观点是,如果存在这种机制,那么恶意开发者就可以这样做。
    【解决方案3】:

    我不确定这是否可行,但试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-16
      • 2011-05-29
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      相关资源
      最近更新 更多