openflashchart保存图片(For JAVA)

12 篇文章 0 订阅
2 篇文章 0 订阅

最近领导要求把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='https://img-blog.csdnimg.cn/2022011111413278406.png'#' + 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" οnclick="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;
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值