From d3847a30a06e4ff46f302991a788364f31bf5997 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Fri, 23 Feb 2018 22:56:14 +0800 Subject: [PATCH] generate screenshot by blob and createObjectURL --- src/js/controller.js | 17 +++++++++++++---- src/template/player.art | 4 ++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/js/controller.js b/src/js/controller.js index 0ff3641..8cf6263 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -200,14 +200,23 @@ class Controller { initScreenshotButton () { if (this.player.options.screenshot) { this.player.template.camareButton.addEventListener('click', () => { - const canvas = document.createElement("canvas"); + const canvas = document.createElement('canvas'); canvas.width = this.player.video.videoWidth; canvas.height = this.player.video.videoHeight; canvas.getContext('2d').drawImage(this.player.video, 0, 0, canvas.width, canvas.height); - const dataURL = canvas.toDataURL(); - this.player.template.camareButton.href = dataURL; - this.player.template.camareButton.download = "DPlayer.png"; + let dataURL; + canvas.toBlob((blob) => { + dataURL = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = dataURL; + link.download = 'DPlayer.png'; + link.style.display = 'none'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + URL.revokeObjectURL(dataURL); + }); this.player.events.trigger('screenshot', dataURL); }); diff --git a/src/template/player.art b/src/template/player.art index 90ce02f..b2f23e4 100644 --- a/src/template/player.art +++ b/src/template/player.art @@ -111,9 +111,9 @@ {{ /if }} {{ if options.screenshot }} - +
{{@ icons.camera }} - +
{{ /if }}