openflashchart保存图片(For JAVA)

来源:互联网 发布:java防重复提交 编辑:程序博客网 时间:2024/05/21 07:14

最近领导要求把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;
        }
}

原创粉丝点击