2009-08-26 24 views
0

我有一個flex 3應用程序,用於從用戶繪製的畫布創建一個圖像。我使用ImageSnapshot類創建圖像我可以打開瀏覽器窗口查看由flex 3應用程序創建的圖像嗎?

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卡住了

回答

0

只要應用程序在Flash Player 10中運行,您仍然可以在Flex 3中使用FileReference的新功能(save()和load()方法)。但是,如果您確實堅持使用Flash Player 9,則需要首先將圖像推送到服務器。如果您正在尋找推動數據到服務器的好方法,請參考我的解決辦法在此問題:

Flex: Render an unrealized UIComponent to BitmapData?

+0

我們做了類似的工作,以另存爲.csv格式的報告。我試圖避免在這種情況下往返服務器 – 2009-08-27 14:52:41

+0

你有沒有一個PHP文件示例回聲圖像回客戶端保存? – 2009-09-24 11:12:36

0

我不相信你可以這樣做,因爲它會違反沙箱。例如,如果這種方法有效,這意味着您可以在用戶的​​機器上放入任意代碼(類似於圖像),而無需他們的同意或知識。

+0

它不會是沒有他們的同意,如果他們能在新的查看圖像瀏覽器窗口,然後選擇如何處理它 – 2009-08-27 14:50:09

+0

是的,但我的觀點是,如果機制存在,那麼惡意開發人員可以做到這一點。 – 2009-08-27 14:59:36

0

我不知道這是否會工作,但試試這個:

中顯示鏈接的圖像(文件://path/to/image/img.ext),並設置window.htmlLoader.navigateInSystemBrowser = true;

相關問題