Greasy Fork is available in English.
canvas图表直接下载-将网页上的canvas内容直接转化为png图片并进行下载,可以在图表秀等网站使用。
// ==UserScript==
// @name canvas直接转图片下载
// @namespace https://www.yeqisong.cn
// @version 0.2
// @description canvas图表直接下载-将网页上的canvas内容直接转化为png图片并进行下载,可以在图表秀等网站使用。
// @author bnbnyu
// @require http://cdn.bootcss.com/jquery/3.2.1/jquery.min.js
// @icon https://sso.tubiaoxiu.com/favicon.png
// @include *
// @grant none
// ==/UserScript==
$(document).ready(function () {
var prhtml = '';
prhtml += '<div class="dpannel" style="display: none; background:#fff; width: 350px; height:auto; position: fixed; bottom:15px; right:15px; box-shadow:0 0 6px rgba(0,0,0,0.6); font-size:12px;">';
prhtml += '<div style="height:40px; line-height:40px; font-size:1.2em; font-weight:700; text-align:center; padding-top:20px;">将Canvas转为png图片</div>';
prhtml += '<div style="width: 330px; margin-left:10px; padding:10px 0px; text-align: center;"><img style="max-width:100%; margin:0px auto;" class="canvaspng"/></div>';
prhtml += '<div style="text-align:center; padding: 10px; ">长度: <span class="canvs_width"></span>px;宽度: <span class="canvs_height"></span>px</div>';
prhtml += '<div style="text-align:center; padding-bottom: 30px;"><div id="dpannel_sure" style="display:inline-block; background:#ff6900; cursor:pointer; font-size:14px; font-weight:bold; color:#fff; text-align:center; width:100px; height:25px; line-height:25px;">确定</div><div id="dpannel_close" style="display:inline-block; font-size:14px; cursor:pointer; font-weight:bold; text-align:center; width:100px; height:25px; line-height:25px; margin-left:25px;">关闭</div></div>';
prhtml += '</div>';
$("body").append(prhtml);
var canvas_content = '';
var canvas_width = 300;
var canvas_height = 150;
//移入canvase显示下载按钮
$("body").on("mouseover","canvas",function(){
canvas_content = '';
canvas_width = 300;
canvas_height = 150;
var _this = this;
var this_index = $(_this).index(_this);
//为当前canvas增加class属性org-canvas
$(_this).addClass("org_canvas_"+this_index);
if($(_this).parent().children('.down_canvas_to_img').length == 0){
$(_this).after('<div class="down_canvas_to_img" data-canvas="org_canvas_'+this_index+'" style="display:none; margin:0px; padding:0px; position: relative; cursor:pointer; width:100px; height:20px; line-height:20px; background:#ff6900; color:#fff; font-size:12px; text-align:center; left:10px; top:-25px;">下载为图片</div>');
}
//当前canvas的内容获取
canvas_content = _this.toDataURL("image/png");
canvas_width = _this.width;
canvas_height = _this.height;
$(_this).parent().find('.down_canvas_to_img').css("display","block");
});
//移出canvas且不在按钮上时,隐藏下载按钮
$("body").on("mouseout", "canvas", function(){
if(!$(this).parent().find('.down_canvas_to_img').is(':hover')){
$(this).parent().find('.down_canvas_to_img').css("display","none");
}
});
//移除按钮时隐藏下载按钮
$("body").on("mouseout", ".down_canvas_to_img", function(){
$(this).css("display", "none");
});
//点击现在按钮,弹出下载预览窗口
$("body").on("click", ".down_canvas_to_img", function(){
var _this = this;
$(".dpannel").css("display", "block");
$(".canvaspng").attr("src", canvas_content);
$(".canvs_width").html(canvas_width);
$(".canvs_height").html(canvas_height);
});
//点击下载确定按钮,将canvas下载为图片
$("body").on("click", "#dpannel_sure", function(){
var _this = this;
saveFile(canvas_content, "canvas2png");
});
//点击下载关闭按钮,关闭下载窗口
$("body").on("click", "#dpannel_close", function(){
var _this = this;
$(".dpannel").css("display", "none");
});
//自动保存图片
function saveFile(data, filename) {
const save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = data;
save_link.download = filename;
const event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
}
});