Introduce Page.saveScreenshot
Page.saveScreenshot uses filepath to infer screenshot type (either PNG of JPG) and saves the screenshot to file system.
This commit is contained in:
parent
10d388b9b1
commit
52e2633f32
19
lib/Page.js
19
lib/Page.js
@ -17,6 +17,7 @@
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var EventEmitter = require('events');
|
var EventEmitter = require('events');
|
||||||
var helpers = require('./helpers');
|
var helpers = require('./helpers');
|
||||||
|
var mime = require('mime');
|
||||||
|
|
||||||
class Page extends EventEmitter {
|
class Page extends EventEmitter {
|
||||||
/**
|
/**
|
||||||
@ -335,6 +336,24 @@ class Page extends EventEmitter {
|
|||||||
return new Buffer(result.data, 'base64');
|
return new Buffer(result.data, 'base64');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} filePath
|
||||||
|
* @param {?{x: number, y: number, width: number, height: number}} clipRect
|
||||||
|
* @return {!Promise}
|
||||||
|
*/
|
||||||
|
async saveScreenshot(filePath, clipRect) {
|
||||||
|
var mimeType = mime.lookup(filePath);
|
||||||
|
var screenshotType = null;
|
||||||
|
if (mimeType === 'image/png')
|
||||||
|
screenshotType = Page.ScreenshotTypes.PNG;
|
||||||
|
else if (mimeType === 'image/jpeg')
|
||||||
|
screenshotType = Page.ScreenshotTypes.JPG;
|
||||||
|
if (!screenshotType)
|
||||||
|
throw new Error(`Cannot render to file ${fileName} - unsupported mimeType ${mimeType}`);
|
||||||
|
var buffer = await this.screenshot(screenshotType, clipRect);
|
||||||
|
fs.writeFileSync(filePath, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {!Promise<string>}
|
* @return {!Promise<string>}
|
||||||
*/
|
*/
|
||||||
|
@ -226,14 +226,6 @@ class WebPage {
|
|||||||
* {string} fileName
|
* {string} fileName
|
||||||
*/
|
*/
|
||||||
render(fileName) {
|
render(fileName) {
|
||||||
var mimeType = mime.lookup(fileName);
|
|
||||||
var screenshotType = null;
|
|
||||||
if (mimeType === 'image/png')
|
|
||||||
screenshotType = ScreenshotTypes.PNG;
|
|
||||||
else if (mimeType === 'image/jpeg')
|
|
||||||
screenshotType = ScreenshotTypes.JPG;
|
|
||||||
if (!screenshotType)
|
|
||||||
throw new Error(`Cannot render to file ${fileName} - unsupported mimeType ${mimeType}`);
|
|
||||||
var clipRect = null;
|
var clipRect = null;
|
||||||
if (this.clipRect && (this.clipRect.left || this.clipRect.top || this.clipRect.width || this.clipRect.height)) {
|
if (this.clipRect && (this.clipRect.left || this.clipRect.top || this.clipRect.width || this.clipRect.height)) {
|
||||||
clipRect = {
|
clipRect = {
|
||||||
@ -243,8 +235,7 @@ class WebPage {
|
|||||||
height: this.clipRect.height
|
height: this.clipRect.height
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
var imageBuffer = await(this._page.screenshot(screenshotType, clipRect));
|
var imageBuffer = await(this._page.saveScreenshot(fileName, clipRect));
|
||||||
fs.writeFileSync(fileName, imageBuffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
release() {
|
release() {
|
||||||
|
Loading…
Reference in New Issue
Block a user