前几应APP运营的妹子要求,做一个奥运机票生成小工具,最后需要保存图片分享。PC直接保存canvas合成的图片,但在移动端就没法用了。SO只能想别的方法,canvas提供一个toDataURL将其输出为base64的图片,可以直接访问。但问题又来了,微信浏览器中它不支持啊,怎么办,加一个图片,toDataURL的值给图片src,这样就OK了。这里说是另一种方法,让现代浏览器直接输出”image/octet-stream”实现图片自动弹出下载功能,下面附简单代码。
html:
<canvas id="canvas" width="320" height="480"></canvas>
javascript:
(function(){
drawing();//调用
})()
function drawing() {
var _canvas = document.getElementById('canvas'),
_context = _canvas.getContext('2d');
_image.src = 'https://lady.tuterm.com/wp-content/uploads/2016/07/1393316689ca.jpg';
_image.onload = function(e) {
_context.clearRect(0, 0, _canvas.width, _canvas.height);
_context.drawImage(_image, 0, 0, _canvas.width, _canvas.height); //填充
var _imgSrc = _canvas.toDataURL("image/jpeg");
saveFile(_imgSrc);
};
}
function saveFile(strData) {
setTimeout(function() {
var filename = 'tuterm_' + (new Date()).getTime() + '.jpg';
strData = strData.replace('image/jpeg', 'image/octet-stream');
downLoadFile(strData, filename);
}, 1000);
}
function downLoadFile(data, filename) {
var _saveLink = document.createElementNS('https://www.w3.org/1999/xhtml', 'a'),
_event = document.createEvent('MouseEvents');
_saveLink.href = data;
_saveLink.download = filename;
_event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
_saveLink.dispatchEvent(_event);
};
在线生成奥运机票链接 https://m.imscv.com/jipiao/index.html
转载请注明:TUTERM.COM » 使用canvas生成图片,js自动下载图片
