Created
November 21, 2019 12:27
-
-
Save yishn/7cd65ea1db0ef2a1b7658f1364b2cb41 to your computer and use it in GitHub Desktop.
Revisions
-
yishn revised this gist
Nov 21, 2019 . No changes.There are no files selected for viewing
-
yishn revised this gist
Nov 21, 2019 . 1 changed file with 29 additions and 29 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -1,37 +1,37 @@ const canIRun = navigator.mediaDevices.getDisplayMedia const takeScreenShot = async () => { const stream = await navigator.mediaDevices.getDisplayMedia({ video: { mediaSource: 'screen' }, }) // get correct video track const track = stream.getVideoTracks()[0] // init Image Capture and not Video stream const imageCapture = new ImageCapture(track) // take first frame only const bitmap = await imageCapture.grabFrame() // destory video track to prevent more recording / mem leak track.stop() const canvas = document.getElementById('fake') // this could be a document.createElement('canvas') if you want // draw weird image type to canvas so we can get a useful image canvas.width = bitmap.width canvas.height = bitmap.height const context = canvas.getContext('2d') context.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height) const image = canvas.toDataURL() // this turns the base 64 string to a [File] object const res = await fetch(image) const buff = await res.arrayBuffer() // clone so we can rename, and put into array for easy proccessing const file = [ new File([buff], `photo_${new Date()}.jpg`, { type: 'image/jpeg', }), ] return file } const button = document.getElementById('cake').onclick = () => canIRun ? takeScreenShot() : {} -
yishn created this gist
Nov 21, 2019 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,37 @@ const canIRun = navigator.mediaDevices.getDisplayMedia const takeScreenShot = async () => { const stream = await navigator.mediaDevices.getDisplayMedia({ video: { mediaSource: 'screen' }, }) // get correct video track const track = stream.getVideoTracks()[0] // init Image Capture and not Video stream const imageCapture = new ImageCapture(track) // take first frame only const bitmap = await imageCapture.grabFrame() // destory video track to prevent more recording / mem leak track.stop() const canvas = document.getElementById('fake') // this could be a document.createElement('canvas') if you want // draw weird image type to canvas so we can get a useful image canvas.width = bitmap.width canvas.height = bitmap.height const context = canvas.getContext('2d') context.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height) const image = canvas.toDataURL() // this turns the base 64 string to a [File] object const res = await fetch(image) const buff = await res.arrayBuffer() // clone so we can rename, and put into array for easy proccessing const file = [ new File([buff], `photo_${new Date()}.jpg`, { type: 'image/jpeg', }), ] return file } const button = document.getElementById('cake').onclick = () => canIRun ? takeScreenShot() : {}