saveimages.mxml
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.managers.CursorManager;
import mx.controls.Alert;
import mx.core.UIComponent;
import mx.collections.ArrayCollection;
import com.adobe.images.JPGEncoder;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
[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("../servlet/ImageServlet");
request.contentType ="applicatoin/octet-stream";
request.data = getJPGByteArray(target);
request.method = URLRequestMethod.POST;
navigateToURL(request, "_blank");
}
]]>
</mx:Script>
<mx:Panel id="chartPanel" title="Bar Chart" width="973" height="556">
<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:Panel>
<mx:Button label="Get Chart Image" click="sendImageByte(myChart)" x="88" y="607"/>
<mx:Button label="保存图片" click="sendImageByte(chartPanel)" x="240" y="607"/>
</mx:Application>
ImageServlet.java
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
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 {
/**
* Constructor of the object.
*/
public ImageServlet() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doService(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doService(request, response);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {
//printImage(request, response);
saveImage(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();
}
}