一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

申精--flex4圖表Chart導(dǎo)出圖片功能實(shí)現(xiàn)詳解--菜鳥級(jí)詳解

 gispdr 2011-09-06
我也是今天剛會(huì)的,flex4開發(fā)Chart圖表的初級(jí)程序員,不太會(huì)用MyEclipse建立servlet,這篇文章對(duì)你們很有用,程序代碼都是從網(wǎng)上搜集到的。
1.使用BitmapData將flex的某個(gè)UIComponent轉(zhuǎn)換為ByteArray

在mxml文件里編寫代碼,創(chuàng)建函數(shù)getJPGByteArray。
參數(shù):圖表對(duì)象實(shí)例
功能:將圖表轉(zhuǎn)換為ByteArray類型
配置:導(dǎo)入JPGEncoder.as和BitString.as類文件

2.使用JPGEncoder轉(zhuǎn)換ByteArray。

3.使用URLRequest發(fā)送ByteArray到服務(wù)端的java servlet

在mxml文件里編寫代碼,創(chuàng)建函數(shù)sendImageByte

參數(shù):圖表對(duì)象實(shí)例
功能:將轉(zhuǎn)換的數(shù)據(jù)發(fā)送到servlet地址
配置:導(dǎo)入JPGEncoder.as和BitString.as類文件

4.在servlet中使用ImageIO保存圖片或者輸出到response
編寫java文件,創(chuàng)建類ImageServlet繼承HttpServlet

功能:處理接收的ByteArray數(shù)據(jù)輸出jpg圖片

配置:導(dǎo)入commons-io-1.4.jar包

用到的包和類文件在附件里。


詳細(xì)解釋:
在flex4里創(chuàng)建mxml文件Keep_Jpg.mxml,代碼如下:
< ?xml version="1.0" encoding="utf-8"?>
< s:Application xmlns:fx="<a target="_blank">http://ns.adobe.com/mxml/2009&lt;;;/a>"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>

</fx:Declarations><br> <fx:Script><br> <![CDATA[

import mx.controls.Alert;
import mx.core.UIComponent;
import mx.collections.ArrayCollection;
import com.JPGEncoder;

[Bindable]
public var expenses:ArrayCollection = new ArrayCollection(
[
{Month:"Jan", Profit:2000, Expenses:1500},
{Month:"Feb", Profit:1000, Expenses:200},
{Month:"Mar", Profit:1500, Expenses:500} ] );
public function getJPGByteArray(target:UIComponent):ByteArray {
var bitmapData : BitmapData = new BitmapData(target.width, target.height);
bitmapData.draw(target);
var jpg : JPGEncoder = new JPGEncoder();
var jpgByteArray : ByteArray = jpg.encode(bitmapData);
return jpgByteArray;
}
public function sendImageByte(target:UIComponent):void {
var request:URLRequest = new URLRequest("<a href="http://localhost:8080/Keep_images/requestUrl" target="_blank"><span style="color:#ff483f;">http://localhost:8080/Keep_images/requestUrl</span></a>");
request.contentType = 'applicatoin/octet-stream';
request.data = getJPGByteArray(target);
request.method = URLRequestMethod.POST;
navigateToURL(request, "_blank");
}
]]>
</fx:Script><br> <mx:Panel id="chartPanel" title="Bar Chart" width="300" height="400">
<mx:BarChart id="myChart" dataProvider="{expenses}" width="100%" height="100%">
<mx:verticalAxis>
<mx:CategoryAxis dataProvider="{expenses}"
categoryField="Month" />
</mx:verticalAxis>
<mx:series>
<mx:BarSeries yField="Month" xField="Profit" displayName="Profit" />
<mx:BarSeries yField="Month" xField="Expenses" displayName="Expenses" />
</mx:series>
</mx:BarChart>
<mx:Legend dataProvider="{myChart}"/>
<mx:Button label="導(dǎo)出圖表圖片" click="sendImageByte(myChart)"/>
<mx:Button label="導(dǎo)出整個(gè)圖表圖片" click="sendImageByte(chartPanel)"/>
</mx:Panel>
</s:Application><br><strong>
在src文件夾里要?jiǎng)?chuàng)建com包,將JPGEncoder.as和BitString.as拷就去,這樣就不會(huì)出錯(cuò)了吧。
然后在MyEclipse里編寫Java代碼,創(chuàng)建Web Project,在src里創(chuàng)建包servlet,然后在包里創(chuàng)建ImageServlet.java文件,代碼如下:
package servlet;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;

public class ImageServlet extends HttpServlet {

public ImageServlet() {
super();
}

public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
doService(arg0, arg1);
}

protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
doService(arg0, arg1);
}

public void init() throws ServletException {
// Put your code here
}
private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {
saveImage(request, response);
//printImage(request, response);
}
private void saveImage(HttpServletRequest request, HttpServletResponse response) throws IOException {
String fileName = "D://" + System.currentTimeMillis() + ".jpg";
BufferedImage bufferedImage = ImageIO.read(request.getInputStream());
if (bufferedImage != null) {
ImageIO.write(bufferedImage, "jpeg", new File(fileName));
}
}

private void printImage(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("image/jpeg");
response.setHeader("Content-Length:", String.valueOf(request.getInputStream().available()));

ServletOutputStream sos = response.getOutputStream();
IOUtils.copy(request.getInputStream(), sos);
sos.flush();
sos.close();
}
}
要導(dǎo)入包c(diǎn)ommons-io-1.4.jar,包放的文件目錄Keep_images\WebRoot\WEB-INF\lib里,然后點(diǎn)擊發(fā)布Project Deployments管理器,添加Keep_images到tomcat服務(wù)器,
還有一點(diǎn)修改WEB-INF里的web.xml文件哦!加入代碼如下(加到的上面):

ImageServlet
servlet.ImageServlet


ImageServlet
/requestUrl

然后運(yùn)行,地址http://localhost:8080/Keep_images/requestUrl,這個(gè)地址粘貼到那個(gè)mxml里就可以了。requestUrl的名字可以隨便起哦!


夠詳細(xì)了吧!再菜鳥的人也該會(huì)做了! 百圖匯-圖片設(shè)計(jì)資源

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产女性精品一区二区三区| 手机在线不卡国产视频| 草草夜色精品国产噜噜竹菊| 99国产一区在线播放| 欧美加勒比一区二区三区| 国产在线视频好看不卡| 尤物天堂av一区二区| 亚洲av日韩一区二区三区四区| 国产又粗又猛又爽色噜噜| 年轻女房东2中文字幕| 日本道播放一区二区三区| 久久91精品国产亚洲| 午夜精品一区二区三区国产| 日本一二三区不卡免费| 亚洲精品福利视频你懂的| 婷婷激情四射在线观看视频 | 激情五月激情婷婷丁香| 狠狠干狠狠操在线播放| 国产成人亚洲欧美二区综| 激情三级在线观看视频| 国产亚洲成av人在线观看| 亚洲熟女一区二区三四区| 亚洲av日韩av高潮无打码| 日本少妇中文字幕不卡视频| 久久永久免费一区二区| 中字幕一区二区三区久久蜜桃| 97人妻精品一区二区三区免| 大香蕉伊人精品在线观看| 国产又粗又长又大的视频| 免费国产成人性生活生活片| 日本黄色录像韩国黄色录像| 欧美性欧美一区二区三区| 中文字幕日韩无套内射| 激情综合五月开心久久| 欧美乱妇日本乱码特黄大片| 欧美偷拍一区二区三区四区 | 欧美日韩国产一级91| 久久精品亚洲精品一区| 99久久人妻精品免费一区| 最好看的人妻中文字幕| 日韩和欧美的一区二区三区|