Skip to content

Instantly share code, notes, and snippets.

@zhchbin
Created February 10, 2013 10:55
Show Gist options
  • Star 30 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save zhchbin/4749217 to your computer and use it in GitHub Desktop.
Save zhchbin/4749217 to your computer and use it in GitHub Desktop.
Node-Webkit API Demo: Window.capturePage
<html>
<body style="background: #333">
<script >
var gui = require('nw.gui');
var win = gui.Window.get();
function takeSnapshot() {
win.capturePage(function(img) {
var popWindow = gui.Window.open('popup.html',
{width: 420, height: 300});
popWindow.on('loaded', function() {
var image = popWindow.window.document.getElementById('image');
image.src = img;
});
}, 'png');
}
</script>
<div style="background: #123; width:100px; height:100px; border:1px solid
#000">
</div>
<button onclick="takeSnapshot()">Click me</button>
</body>
</html>
{
"name": "nw-api-demo",
"main": "index.html"
}
<html>
<head>
<title>Popup window</title>
<style>
img{
width: 400;
}
</style>
</head>
<body>
<img id="image"/>
</body>
</html>
@GitOnTop
Copy link

Just wanted to comment that in order to get a lossless image (best quality) you must specify 'png' at the end of the function. ie...

}, 'png');

If you don't specify anything here, then you'll get a compressed jpg image. EVEN IF you write the image to your hard drive as a png file, if you don't specify 'png' at the end of the function it will save it with compressed jpg quality.

I pulled my hair out for hours trying to figure out why my screenshot images didn't look quite as good as the source, and this was why. So hopefully I can spare someone else that pain :)

@wonderdogone
Copy link

could you feed in a string of .html from memory to capturePage?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment