通常,将JavaScript图表另存为图片是一个非常复杂的过程,但amCharts的

1、首先下载canvg

2、包括canvg.js, rbgcolor.js, amcharts.js以及以下扩展:

/*

* Export.js - AmCharts to PNG

* Benjamin Maertz (tetra1337@gmail.com)

*

* Requires: rgbcolor.js - http://www.phpied.com/rgb-color-parser-in-javascript/

* canvg.js - http://code.google.com/p/canvg/

* amcharts.js - http://www.amcharts.com/download

*/

// Lookup for required libs

if ( typeof(AmCharts) === 'undefined' || typeof(canvg) === 'undefined' || typeof(RGBColor) === 'undefined' ) {

throw('Woup smth is wrong you might review that http://www.amcharts.com/forum/viewtopic.php?id=11001');

}

// Define custom util

AmCharts.getExport = function(anything) {

/*

** PRIVATE FUNCTIONS

*/

// Word around until somebody found out how to cover that

function removeImages(svg) {

var startStr = '

var stopStr = '

';

var start = svg.indexOf(startStr);

var stop = svg.indexOf(stopStr);

var match = '';

// Recursion

if ( start != -1 && stop != -1 ) {

svg = removeImages(svg.slice(0,start) + svg.slice(stop + stopStr.length,svg.length));

}

return svg;

};

// Senseless function to handle any input

function gatherAnything(anything,inside) {

switch(toString.call(anything)) {

case '[object String]':

if ( document.getElementById(anything) ) {

anything = inside?document.getElementById(anything):new Array(document.getElementById(anything));

}

break;

case '[object Array]':

for ( var i=0;i

anything[i] = gatherAnything(anything[i],true);

}

break;

case '[object XULElement]':

anything = inside?anything:new Array(anything);

break;

case '[object HTMLDivElement]':

anything = inside?anything:new Array(anything);

break;

default:

anything = new Array();

for ( var i=0;i

anything.push(AmCharts.charts[i].div);

}

break;

}

return anything;

}

/*

** varibales VARIABLES!!!

*/

var chartContainer = gatherAnything(anything);

var chartImages = [];

var canvgOptions = {

ignoreAnimation : true,

ignoreMouse : true,

ignoreClear : true,

ignoreDimensions: true,

offsetX : 0,

offsetY : 0

};

/*

** Loop, generate, offer

*/

// Loop through given container

for(var i1=0;i1

var canvas = document.createElement('canvas');

var context = canvas.getContext('2d');

var svgs = chartContainer[i1].getElementsByTagName('svg');

var image = new Image();

var heightCounter = 0;

// Set dimensions, background color to the canvas

canvas.width = chartContainer[i1].offsetWidth;

canvas.height = chartContainer[i1].offsetHeight;

context.fillStyle = '#FFFFFF';

context.fillRect(0,0,canvas.width,canvas.height);

// Loop through all svgs within the container

for(var i2=0;i2

var wrapper = svgs[i2].parentNode;

var clone = svgs[i2].cloneNode(true);

var cloneDiv = document.createElement('div');

var offsets = {

x: wrapper.style.left.slice(0,-2) || 0,

y: wrapper.style.top.slice(0,-2) || 0,

height: wrapper.offsetHeight,

width: wrapper.offsetWidth

};

// Remove the style and append the clone to the div to receive the full SVG data

clone.setAttribute('style','');

cloneDiv.appendChild(clone);

innerHTML = removeImages(cloneDiv.innerHTML); // without imagery

// Apply parent offset

if ( offsets.y == 0 ) {

offsets.y = heightCounter;

heightCounter += offsets.height;

}

canvgOptions.offsetX = offsets.x;

canvgOptions.offsetY = offsets.y;

// Some magic beyond the scenes...

canvg(canvas,innerHTML,canvgOptions);

}

// Get the final data URL and throw throwat image to the array

image.src = canvas.toDataURL();

chartImages.push(image);

}

// Return DAT IMAGESS!!!!

return chartImages

}

3、执行以下扩展

AmCharts.getExport(); // Returns all charts in the global AmCharts instance

AmCharts.getExport() // Returns all charts within the given container

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com

文章转载自:慧都控件

html5 js图片另存为,amCharts之JavaScript/HTML5 Charts应用教程二:将JS图表另存为图片...相关推荐

  1. html 图片自动滚动播放,javascript+html5实现仿flash滚动播放图片的方法

    本文实例讲述了javascript+html5实现仿flash滚动播放图片的方法.分享给大家供大家参考.具体如下: html部分: css部分: body{ margin: 0px; padding: ...

  2. html5 表单必填项,javascript - HTML5表单必填属性。 设置自定义验证消息?

    javascript - HTML5表单必填属性. 设置自定义验证消息? 我有以下HTML5表格:[http://jsfiddle.net/nfgfP/] ***** 目前当我在空白时点击输入时,会出 ...

  3. html5添加flash动画效果,用JavaScript/HTML5实现Flash功能

    一个叫Chris Smoak的程序员,最近发起一个使用JavaScript/HTML5实现Flash功能的开源项目,Smokescreen,可以将 Flash动画转换为纯HTML5 + JavaScr ...

  4. java script的图片隐藏,java和javascript中过滤掉img形式的字符串不显示图片的方法...

    本文实例讲述了java和javascript中过滤掉img形式的字符串不显示图片的方法.分享给大家供大家参考.具体实现方法如下: 1. javascript过滤掉和形式的字符串 复制代码代码如下: 过 ...

  5. java喷泉编码_好程序员Java教程分享使用JS实现简单喷泉效果

    原标题:好程序员Java教程分享使用JS实现简单喷泉效果 好程序员Java教程分享使用JS实现简单喷泉效果,最近,在教学生使用JS的基本操作,为了练习JS的基本作用,特地写了一个喷泉效果,代码如下: ...

  6. Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

    Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...

  7. 使用HTML5画布实现的超棒javascript动画仪表板:gauge.js

    日期:2012-8-8  来源:GBin1.com 在线演示 今天我们分享来自guage.js的超棒动画仪表板实现,这个类库使用html5画布来生成动态的自定义仪表板.不依赖于任何类库也不实用任何的C ...

  8. html5多张图片滚动播放,javascript+html5实现仿flash滚动播放图片的方法_javascript技巧...

    本文实例讲述了javascript+html5实现仿flash滚动播放图片的方法.分享给大家供大家参考.具体如下: html部分: css部分: body{ margin: 0px; padding: ...

  9. web大二实训作业:校园运动会网站设计——运动会图片轮播图片遮罩特效(4页)体育 HTML+CSS+JavaScript HTML5期末大作业...

    常见网页设计作业题材有 ​​个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明星. 服装. 体育. 化妆品. 物流. 环保. 书籍. 婚纱. 军 ...

最新文章

  1. 专业的秘密 | 南方医科大学生物信息学专业
  2. SSH框架执行自己定义的SQL语句
  3. 接地脚是什么意思_史上最全的接地系统详解,值得收藏
  4. AFN中请求序列化的设置
  5. 读取excel文件错误
  6. 机械秒表的使用方法_让console.log()不再是你的唯一选项js日志输出6种方法
  7. 李洋疯狂C语言之将”you are come from shanghai ”倒置为”shanghai from come are you”,将句子中的单词位置倒置,而不改变单词内部结构
  8. Windows坐标系统
  9. css无效 https_【CSS非全解02】CSS基础-文档流
  10. SqlServer中如何按姓氏笔画排序
  11. OSI参考模型及其数据封装和解封装介绍
  12. 实现JPA的懒加载和无外键
  13. Python设计模式:原型模式
  14. Java中常见的异常举例
  15. phpmyadmin scriptssetup.php 反序列化漏洞(WooYun-2016-199433)
  16. 如何配置服务器的内网IP以及MTU
  17. Matlab 车牌识别技术
  18. 【論文筆記】MIDAS:Microcluster-Based Detector of Anomalies in Edge Streams
  19. 解决“你没有权限访问,请与网络管理员联系”
  20. 安卓端使用MT终端管理器crontab设置定时任务

热门文章

  1. git的基本使用方法,操作详解(如何拉取代码,上传代码)
  2. 浏览器安全评比 火狐狸凌驾IE7
  3. 思维能力--提升认知、效率、耐心
  4. java cas 什么意思_什么是CAS机制,通俗易懂大白话版。
  5. fastadmin 表格,表格中隐藏列但在搜索中有该筛选项
  6. 哲学家就餐问题学习笔记
  7. 华为荣耀20s云服务_荣耀20s参数
  8. 江苏大学微型计算机控制技术,江苏大学计算机控制技术课程设计.doc
  9. 中国国内ios软件开发前景到底是怎样的呢
  10. DataStage Server Routines