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'));
本文介绍了一种使用Flex进行屏幕截图的方法,并将其转换为Base64编码字符串以便于在网络上传输。此外,还提供了如何利用Perl CGI脚本解析Base64编码字符串并返回图像数据的具体实现。
545

被折叠的 条评论
为什么被折叠?



