Phantom JS - 剪辑矩形 - Javascript 帮助

发布于 2024-11-16 16:04:15 字数 894 浏览 4 评论 0原文

我正在使用 phantom js 对页面进行屏幕截图

http://code.google。 com/p/phantomjs/wiki/QuickStart#Rendering

它有一个名为clipRect的功能

http://code.google.com/p/phantomjs/wiki/Interface#clipRect_(object)

有人可以告诉我如何将以下代码修改为我们的clipRect,这样我只得到部分截图而不是全部?

if (phantom.state.length === 0) {
if (phantom.args.length !== 2) {
    console.log('Usage: rasterize.js URL filename');
    phantom.exit();
} else {
    var address = phantom.args[0];
    phantom.state = 'rasterize';
    phantom.viewportSize = { width: 600, height: 600 };
    phantom.open(address);
}
} else {
    var output = phantom.args[1];
    phantom.sleep(200);
    phantom.render(output);
    phantom.exit();
}    

i'm using phantom js to screen shot a page

http://code.google.com/p/phantomjs/wiki/QuickStart#Rendering

it has a feature called clipRect

http://code.google.com/p/phantomjs/wiki/Interface#clipRect_(object)

can someone show me how i would modify the following code to us clipRect so i only get a partial screenshot and not the whole thing?

if (phantom.state.length === 0) {
if (phantom.args.length !== 2) {
    console.log('Usage: rasterize.js URL filename');
    phantom.exit();
} else {
    var address = phantom.args[0];
    phantom.state = 'rasterize';
    phantom.viewportSize = { width: 600, height: 600 };
    phantom.open(address);
}
} else {
    var output = phantom.args[1];
    phantom.sleep(200);
    phantom.render(output);
    phantom.exit();
}    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏至、离别 2024-11-23 16:04:15

如果您尝试获取特定元素的屏幕截图,您可以根据 这篇文章

page.clipRect = page.evaluate(function() {
    return document.getElementById(THE_ELEMENT_YOU_WANT).getBoundingClientRect(); 
});

If you are trying to get a screenshot of a particular element, you could get the necessary information for clipRect from getBoundingClientRect as per the bottom of this article:

page.clipRect = page.evaluate(function() {
    return document.getElementById(THE_ELEMENT_YOU_WANT).getBoundingClientRect(); 
});
天冷不及心凉 2024-11-23 16:04:15

来自精细手册

clipRect(对象)

此属性定义调用 render() 时要光栅化的网页矩形区域。如果没有设置剪切矩形,render() 将处理整个网页。

示例:phantom.clipRect = { 顶部:14,左侧:3,宽度:400,高度:300 }

因此,请尝试在调用 render< 之前设置 clipRect /code>:

var output = phantom.args[1];
phantom.sleep(200);
phantom.clipRect = { top: 14, left: 3, width: 400, height: 300 }
phantom.render(output);
phantom.exit();

您必须弄清楚左上角(topleft)在哪里以及有多大(widthheight)您想要的剪切矩形。

您可以在调用 render() 之前的任何时间设置 clipRect,但从这里开始,看看会发生什么。

From the fine manual:

clipRect (object)

This property defines the rectangular area of the web page to be rasterized when render() is invoked. If no clipping rectangle is set, render() will process the entire web page.

Example: phantom.clipRect = { top: 14, left: 3, width: 400, height: 300 }

So try setting clipRect right before you call render:

var output = phantom.args[1];
phantom.sleep(200);
phantom.clipRect = { top: 14, left: 3, width: 400, height: 300 }
phantom.render(output);
phantom.exit();

You'd have to figure out where the upper left corner (top and left) is and how big (width and height) you want the clipping rectangle to be.

You can probably set the clipRect any time before render() is called but start with that and see what happens.

清醇 2024-11-23 16:04:15

发生的事情是我正在使用brew并且它正在安装v 1.0.0,其中clipRect和几乎所有其他功能不受支持,因为v 1.0.0是最旧的版本。

如果您按照以下说明操作:http://code.google.com/p/phantomjs /wiki/BuildInstructions#Mac_OS_X

然后右键单击已编译的文件并单击显示/查看内容(在 mac 上),然后将可执行文件 bin/phantomjs.app/Contents/MacOS/phantomjs 复制到某个位置PATH 中的目录。

请随时在这里发帖,我正在监控此事,如果需要我可以提供帮助。

What was happening is i was using brew and it was installing v 1.0.0 where clipRect and almost every other function wasn't supported as v 1.0.0 is the oldest version.

If you follow these instructions: http://code.google.com/p/phantomjs/wiki/BuildInstructions#Mac_OS_X

then right click on the complied file and click show/view contents (on mac) then copy the executable bin/phantomjs.app/Contents/MacOS/phantomjs to some directory in your PATH.

Feel free to post on here i'm monitoring this and i can help if needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文