html5 js图片另存为,amCharts之JavaScript/HTML5 Charts应用教程二:将JS图表另存为图片...
通常,将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图表另存为图片...相关推荐
- html 图片自动滚动播放,javascript+html5实现仿flash滚动播放图片的方法
本文实例讲述了javascript+html5实现仿flash滚动播放图片的方法.分享给大家供大家参考.具体如下: html部分: css部分: body{ margin: 0px; padding: ...
- html5 表单必填项,javascript - HTML5表单必填属性。 设置自定义验证消息?
javascript - HTML5表单必填属性. 设置自定义验证消息? 我有以下HTML5表格:[http://jsfiddle.net/nfgfP/] ***** 目前当我在空白时点击输入时,会出 ...
- html5添加flash动画效果,用JavaScript/HTML5实现Flash功能
一个叫Chris Smoak的程序员,最近发起一个使用JavaScript/HTML5实现Flash功能的开源项目,Smokescreen,可以将 Flash动画转换为纯HTML5 + JavaScr ...
- java script的图片隐藏,java和javascript中过滤掉img形式的字符串不显示图片的方法...
本文实例讲述了java和javascript中过滤掉img形式的字符串不显示图片的方法.分享给大家供大家参考.具体实现方法如下: 1. javascript过滤掉和形式的字符串 复制代码代码如下: 过 ...
- java喷泉编码_好程序员Java教程分享使用JS实现简单喷泉效果
原标题:好程序员Java教程分享使用JS实现简单喷泉效果 好程序员Java教程分享使用JS实现简单喷泉效果,最近,在教学生使用JS的基本操作,为了练习JS的基本作用,特地写了一个喷泉效果,代码如下: ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...
- 使用HTML5画布实现的超棒javascript动画仪表板:gauge.js
日期:2012-8-8 来源:GBin1.com 在线演示 今天我们分享来自guage.js的超棒动画仪表板实现,这个类库使用html5画布来生成动态的自定义仪表板.不依赖于任何类库也不实用任何的C ...
- html5多张图片滚动播放,javascript+html5实现仿flash滚动播放图片的方法_javascript技巧...
本文实例讲述了javascript+html5实现仿flash滚动播放图片的方法.分享给大家供大家参考.具体如下: html部分: css部分: body{ margin: 0px; padding: ...
- web大二实训作业:校园运动会网站设计——运动会图片轮播图片遮罩特效(4页)体育 HTML+CSS+JavaScript HTML5期末大作业...
常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明星. 服装. 体育. 化妆品. 物流. 环保. 书籍. 婚纱. 军 ...
最新文章
- 专业的秘密 | 南方医科大学生物信息学专业
- SSH框架执行自己定义的SQL语句
- 接地脚是什么意思_史上最全的接地系统详解,值得收藏
- AFN中请求序列化的设置
- 读取excel文件错误
- 机械秒表的使用方法_让console.log()不再是你的唯一选项js日志输出6种方法
- 李洋疯狂C语言之将”you are come from shanghai ”倒置为”shanghai from come are you”,将句子中的单词位置倒置,而不改变单词内部结构
- Windows坐标系统
- css无效 https_【CSS非全解02】CSS基础-文档流
- SqlServer中如何按姓氏笔画排序
- OSI参考模型及其数据封装和解封装介绍
- 实现JPA的懒加载和无外键
- Python设计模式:原型模式
- Java中常见的异常举例
- phpmyadmin scriptssetup.php 反序列化漏洞(WooYun-2016-199433)
- 如何配置服务器的内网IP以及MTU
- Matlab 车牌识别技术
- 【論文筆記】MIDAS:Microcluster-Based Detector of Anomalies in Edge Streams
- 解决“你没有权限访问,请与网络管理员联系”
- 安卓端使用MT终端管理器crontab设置定时任务