您的位置:首页 > 编程语言 > Java开发

openflashchart保存图片(For JAVA)

2013-11-27 10:53 337 查看
最近领导要求把flash生成的图表存成图片,使用的是openflashchart,百度后才发现本身就有导出图片功能(孤陋寡闻了-_-!!)。

openflashchart导出的是BASE64编码的字符串,如果要保存文件,这就需要用后台进行解码,然后再保存。

话不多说,上代码:

<script type="text/javascript" src="js/swfobject.js"></script>

<div id="mychart"></div>

<script>

function show_swf(AreaStr){

swfobject.embedSWF(

"charts/open-flash-chart-new.swf",

"mychart",

330,

120,

"9.0.0",

"charts/expressinstall.swf",

{"data-file":"PriceString.zhtml?Areaname="+AreaStr},

{"wmode" : "transparent"});

}

//抓图

OFC = {};

OFC.jquery = {

name: "jQuery",

version: function(src) { return $('#' + src)[0].get_version() },

rasterize: function(src, dst) { $('#' + dst).replaceWith(OFC.jquery.image(src)) },

image: function(src) { return "<img src='data:image/png;base64," + $('#' + src)[0].get_img_binary() + "' />" },

popup: function(src) {

var img_win = window.open('', 'Image')

with (img_win.document) {

write('<html><head><title>Tipsdoo Chart Report Image</title></head><body>' + OFC.jquery.image(src) + '</body></html>')

}

img_win.document.close();

}

}

if (typeof (Control == "undefined")) { var Control = { OFC: OFC.jquery} }

function save_image() {

$.ajax({

type:"POST",

url:"SaveImage.Base64ToImage",

data:"imgstr="+$('#mychart')[0].get_img_binary(),

success:function(re){

}

});

//OFC.jquery.popup('mychart')

}

function moo() { alert(99); };

</script>

<input type="button" name="btncopy" onclick="OFC.jquery.rasterize('mychart', 'ImagePanel');save_image();" value="生成图片" />

后台代码:

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.util.Date;

import sun.misc.BASE64Decoder;

public void Base64ToImage(String ImageStr){

//对字节数组字符串进行Base64解码并生成图片

if (ImageStr == null) //图像数据为空

return;

BASE64Decoder decoder = new BASE64Decoder();

try

{

//Base64解码

byte[] b = decoder.decodeBuffer(ImageStr);

for(int i=0;i<b.length;++i)

{

if(b[i]<0)

{//调整异常数据

b[i]+=256;

}

}

//生成jpeg图片

String imgFilePath = "c:\\abc.png";//新生成的图片

OutputStream out = new FileOutputStream(imgFilePath);

out.write(b);

out.flush();

out.close();

}

catch (Exception e)

{

return;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: