flex:
chartPanel是要save的元件
<mx:Button label="Save Image" click="displayChart(chartPanel)"/>
public function takeSnapshot(comp:DisplayObject):void
{
//for flex_2
var bd:BitmapData = new BitmapData(comp.width,comp.height);
bd.draw(reportTile);
var ba:ByteArray = PNGEnc.encode(bd);
var b64Encode:Base64Encoder = new Base64Encoder();
b64Encode.encodeBytes(ba);
var b64String = b64Encode.flush();
//for flex_3
var snapshot:ImageSnapshot = ImageSnapshot.captureImage(comp);
var b64String:String = ImageSnapshot.encodeImageAsBase64(snapshot);
//for firefox
//var u:URLRequest = new URLRequest("data:image/png;base64,"+b64String );
//for IE & firefox
var u:URLRequest = new URLRequest(urlString +"/displaychart.cgi");
var v:URLVariables = new URLVariables();
v.imageString = b64String ;
u.data = v;
u.method = URLRequestMethod.POST;
navigateToURL(u,"_blank");
}
displaychart.cgi
#!c:/perl/bin/perl -w
use strict;
use Net::LDAP;
use DBI;
use CGI qw/:standard/;
use MIME::Base64;
#print "Content-type: application/octet-stream/n";
#print "Content-Disposition: attachment; filename=chart.png/n/n";
print "Content-type: image/png/n/n";
print decode_base64(param('imageString'));