黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

導出Flex組件為jpg圖片

系統 1969 0
前幾天看了lwz7512的 《 基于servlet導出Flex/Flash界面為圖形文件的簡單方法 》,今天有時間就實踐了一下。

1 .使用BitmapData將flex的某個UIComponent轉換為ByteArray
2 .使用JPGEncoder轉換ByteArray。JPGEncoder是corelib( http://code.google.com/p/as3corelib/ ) 的組件。我直接導入corelib.swc卻報錯,幸好有源代碼可以直接使用。
3 .使用URLRequest發送ByteArray到服務端的java servlet
4 .在servlet中使用ImageIO保存圖片或者輸出到response

下面是具體代碼

actionscript 代碼
?
  1. < mx:Application ???
  2. ???? xmlns:mx = "http://www.adobe.com/2006/mxml" ???
  3. ???? layout = "absolute" > ??
  4. ??
  5. ???? < mx:Script > ??
  6. ????????[CDATA[??
  7. ????????????import?mx.controls.Alert;??
  8. ????????????import?mx.core.UIComponent;??
  9. ????????????import?mx.collections.ArrayCollection;??
  10. ????????????import?com.adobe.images.JPGEncoder;??
  11. ??????????????
  12. ????????????[Bindable]??
  13. ????????????public?var? expenses:ArrayCollection ?=? new ?ArrayCollection(??
  14. ????????????????[??
  15. ????????????????????{Month:"Jan",?Profit:2000,?Expenses:1500},??
  16. ????????????????????{Month:"Feb",?Profit:1000,?Expenses:200},??
  17. ????????????????????{Month:"Mar",?Profit:1500,?Expenses:500}??
  18. ????????????????]??
  19. ????????????);??
  20. ??????????????
  21. ????????????public?function?getJPGByteArray(target:UIComponent):ByteArray?{??
  22. ????????????????var?bitmapData?:? BitmapData ?=? new ?BitmapData(target.width,?target.height);??
  23. ????????????????bitmapData.draw(target);???
  24. ??????????????????
  25. ????????????????var?jpg?:? JPGEncoder ?=? new ?JPGEncoder();??
  26. ????????????????var?jpgByteArray?:? ByteArray ?=? jpg .encode(bitmapData);??
  27. ????????????????return?jpgByteArray;??
  28. ????????????}??
  29. ??????????????
  30. ????????????public?function?sendImageByte(target:UIComponent):void?{??
  31. ????????????????var? request:URLRequest ?=? new ?URLRequest("myImage");??
  32. ???????????????? request.contentType ?=? 'applicatoin/octet-stream' ;??
  33. ???????????????? request.data ?=? getJPGByteArray (target);??
  34. ???????????????? request.method ?=? URLRequestMethod .POST;??
  35. ????????????????navigateToURL(request,?"_blank");??
  36. ????????????}??
  37. ????????]]??
  38. ???? </ mx:Script > ??
  39. ??
  40. ???? < mx:Panel ? id = "chartPanel" ? title = "Bar?Chart" ? width = "300" ? height = "400" > ??
  41. ????? < mx:BarChart ? id = "myChart" ? dataProvider = "{expenses}" ? width = "100%" ? height = "100%" > ??
  42. ???????? < mx:verticalAxis > ??
  43. ??????????? < mx:CategoryAxis ???
  44. ???????????????? dataProvider = "{expenses}" ???
  45. ???????????????? categoryField = "Month" ??
  46. ??????????? /> ??
  47. ???????? </ mx:verticalAxis > ??
  48. ???????? < mx:series > ??
  49. ??????????? < mx:BarSeries ???
  50. ???????????????? yField = "Month" ???
  51. ???????????????? xField = "Profit" ???
  52. ???????????????? displayName = "Profit" ??
  53. ??????????? /> ??
  54. ??????????? < mx:BarSeries ???
  55. ???????????????? yField = "Month" ???
  56. ???????????????? xField = "Expenses" ???
  57. ???????????????? displayName = "Expenses" ??
  58. ??????????? /> ??
  59. ???????? </ mx:series > ??
  60. ????? </ mx:BarChart > ??
  61. ????? < mx:Legend ? dataProvider = "{myChart}" /> ??
  62. ????? < mx:Button ? label = "Get?Chart?Image" ? click = "sendImageByte(myChart)" /> ??
  63. ????? < mx:Button ? label = "Get?Panel?Image" ? click = "sendImageByte(chartPanel)" /> ??
  64. ???? </ mx:Panel > ??
  65. ??????
  66. </ mx:Application > ??

這里使用了一個Bar Chart圖表進行實驗,URLRequest的myImage是我的java servlet

java 代碼
?
  1. import ?java.awt.image.BufferedImage;??
  2. import ?javax.imageio.ImageIO;??
  3. import ?org.apache.commons.io.IOUtils;??
  4. ??
  5. public ? class ?ImageServlet? extends ?HttpServlet?{??
  6. ??????
  7. ???? @Override ??
  8. ???? protected ? void ?doGet(HttpServletRequest?arg0,?HttpServletResponse?arg1)? throws ?ServletException,?IOException?{??
  9. ????????doService(arg0,?arg1);??
  10. ????}??
  11. ??
  12. ???? @Override ??
  13. ???? protected ? void ?doPost(HttpServletRequest?arg0,?HttpServletResponse?arg1)? throws ?ServletException,?IOException?{??
  14. ????????doService(arg0,?arg1);??
  15. ????}??
  16. ??
  17. ???? private ? void ?doService(HttpServletRequest?request,?HttpServletResponse?response)? throws ?IOException?{??
  18. ???????? //saveImage(request,?response); ??
  19. ????????printImage(request,?response);??
  20. ????}??
  21. ??????
  22. ???? private ? void ?saveImage(HttpServletRequest?request,?HttpServletResponse?response)? throws ?IOException??{??
  23. ????????String?fileName?=? "D://" ?+?System.currentTimeMillis()?+? ".jpg" ;??
  24. ????????BufferedImage?bufferedImage?=?ImageIO.read(request.getInputStream());??
  25. ???????? if ?(bufferedImage?!=? null )?{??
  26. ????????????ImageIO.write(bufferedImage,? "jpeg" ,? new ?File(fileName));??
  27. ????????}??
  28. ????}??
  29. ??????
  30. ???? private ? void ?printImage(HttpServletRequest?request,?HttpServletResponse?response)? throws ?IOException??{??
  31. ????????response.setContentType( "image/jpeg" );??
  32. ????????response.setHeader( "Content-Length:" ,?String.valueOf(request.getInputStream().available()));??
  33. ??????????
  34. ????????ServletOutputStream?sos?=?response.getOutputStream();??
  35. ????????IOUtils.copy(request.getInputStream(),?sos);??
  36. ????????sos.flush();??
  37. ????????sos.close();??
  38. ????}??
  39. }??

printImage將圖形輸出到response,將會在web瀏覽器中看到圖片。或者你可以使用saveImage保存圖片到服務器。

導出Flex組件為jpg圖片


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論