A Pen by Renan Pupin on CodePen.
Created
May 16, 2019 19:30
-
-
Save chibaye/dd934cef4a080f131703287298a5bcb9 to your computer and use it in GitHub Desktop.
HTML5 Dynamic generate thumbnail
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div style="border: solid 1px #ccc; padding: 10px; text-align: center;"> | |
<video id="video" width="320" controls="true"> | |
<source src="http://html5doctor.com/demos/video-canvas-magic/video.webm"><!-- FireFox 3.5 --> | |
<source src="movie.mp4"><!-- WebKit --> | |
Your browser does not support HTML5 video tag. Please download FireFox 3.5 or higher. | |
</video><br/> | |
<button onclick="shoot()" style="width: 64px;border: solid 2px #ccc;">Capture</button><br/> | |
<div id="output" style="display: inline-block; top: 4px; position: relative ;border: dotted 1px #ccc; padding: 2px;"></div> | |
</div> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var videoId = 'video'; | |
var scaleFactor = 0.25; | |
var snapshots = []; | |
/** | |
* Captures a image frame from the provided video element. | |
* | |
* @param {Video} video HTML5 video element from where the image frame will be captured. | |
* @param {Number} scaleFactor Factor to scale the canvas element that will be return. This is an optional parameter. | |
* | |
* @return {Canvas} | |
*/ | |
function capture(video, scaleFactor) { | |
if(scaleFactor == null){ | |
scaleFactor = 1; | |
} | |
var w = video.videoWidth * scaleFactor; | |
var h = video.videoHeight * scaleFactor; | |
var canvas = document.createElement('canvas'); | |
canvas.width = w; | |
canvas.height = h; | |
var ctx = canvas.getContext('2d'); | |
ctx.drawImage(video, 0, 0, w, h); | |
return canvas; | |
} | |
/** | |
* Invokes the <code>capture</code> function and attaches the canvas element to the DOM. | |
*/ | |
function shoot(){ | |
var video = document.getElementById(videoId); | |
var output = document.getElementById('output'); | |
var canvas = capture(video, scaleFactor); | |
canvas.onclick = function(){ | |
window.open(this.toDataURL()); | |
}; | |
snapshots.unshift(canvas); | |
output.innerHTML = ''; | |
for(var i=0; i<4; i++){ | |
output.appendChild(snapshots[i]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment