[转]Phantomjs实现获取网页快照并生成缩略图
Shell脚本实现获取网页快照并生成缩略图
获取网页快照并生成缩略图可分两步进行:
1、获取网页快照
2、生成缩略图
获取网页快照
这里我们用 phantomjs 来实现。关于 phantomjs 的详细用法可参考官方网站。http://phantomjs.org/
1、安装
我的环境是CentOS 7,安装时直接下载源码,我下的版本是2.0.0,安装按照官网的说明即可。
2、调用
phantomjs的调用需要一个js脚本。这个js脚本接收两个参数,分别是网址url和快照文件名称filename,脚本snap.js内容如下:
/*
* desc: get snapshot from url
* example: phantomjs snap.js http://www.baidu.com baidu.png
*/ var page = require('webpage').create();
var args = require('system').args; var pageW = 1024;
var pageH = 768; page.viewportSize = {
width: pageW,
height: pageH
}; var url = args[1];
var filename = args[2];
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to load ' + url + ' !');
phantom.exit();
} else {
window.setTimeout(function () {
page.clipRect = { left: 0, top: 0, width: pageW, height: pageH };
page.render(filename);
console.log('finish:', filename);
phantom.exit();
}, 1000);
}
});
在这个脚本中还有个小小的设置,就是设置打开页面的浏览器可视区域的大小为1024*768,然后取第一屏内容。
调用命令如下:
注意:这里执行命令的用户需要对目录有写权限。
3、效果
获取的截图如下:
生成缩略图
生成缩略图用的是ImageMagick工具,ImageMagick是个非常强大的图片处理工具,可对图片进行转化(格式转换、缩放、剪切、模糊、反转等)、屏幕截图、图片显示等,详细用法可参考 我的ImageMagick使用心得 一文。
1、安装
redhat系列可使用yum安装:
其他平台安装请参考官方网站:http://www.imagemagick.org/script/binary-releases.php,根据你的系统选择相应的包或自己编译源码。
2、调用
我们这里只使用图片缩放工具,语法为:
默认是按比率缩放,如果要强制缩放,可以在尺寸后面加感叹号:
3、效果
生成的缩略图如下:
整合脚本
如果希望将上两步自动化,可以写一个shell脚本实现:
# !/bin/bash
# desc: create snapshot from url
# example: sh createsnap.sh http://www.baidu.com baidu URL=$1 IMAGE_NAME=$2 SNAPSHOT_NAME="${IMAGE_NAME}.png" THUMBNAIL_NAME="${IMAGE_NAME}_thumbnail.png" phantomjs snap.js $URL $SNAPSHOT_NAME convert -resize 320x240 $SNAPSHOT_NAME $THUMBNAIL_NAME exit 0
[转]Phantomjs实现获取网页快照并生成缩略图的更多相关文章
- shell脚本获取网页快照并生成缩略图
获取网页快照并生成缩略图可分两步进行: 1.获取网页快照 2.生成缩略图 获取网页快照 这里我们用 phantomjs 来实现.关于 phantomjs 的详细用法可参考官方网站. 1.安装 我的环境 ...
- phpcms v9图片生成缩略图变成黑色解决方法
今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...
- .net又一个生成缩略图的方法,不变形
生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 /// <summary> /// 为图片生成缩略图 by 何问起 /// ...
- yii php 图片上传与生成缩略图
今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图 ($pic_action_url = $this->createAbsoluteUrl('h ...
- 使用AVFoundation仅仅生成缩略图,不进行播放视频(本地和网络文件都可以创建视频缩略图)
使用MPMoviePlayerController来生成缩略图足够简单,但是如果仅仅是是为了生成缩略图而不进行视频播放的话,此刻使用 MPMoviePlayerController就有点大材小用了.其 ...
- 黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)
C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...
- Yii 框架生成缩略图
控制器 if($model->load(Yii::$app->request->post())) { //原图 $model->img = ...
- java调用phantomjs采集ajax加载生成的网页
java调用phantomjs采集ajax加载生成的网页 日前有采集需求,当我把所有的对应页面的链接都拿到手,准备开始根据链接去采集(写爬虫爬取)对应的终端页的时候,发觉用程序获取到的数据根本没有对应 ...
- C#上传图片和生成缩略图以及图片预览
因工作需要,上传图片要增加MIME类型验证和生成较小尺寸的图片用于浏览.根据网上代码加以修改做出如下效果图: 前台代码如下: <html xmlns="http://www.w3.or ...
随机推荐
- poj1753(位运算压缩状态+bfs)
题意:有个4*4的棋盘,上面摆着黑棋和白旗,b代表黑棋,w代表白棋,现在有一种操作,如果你想要改变某一个棋子的颜色,那么它周围(前后左右)棋子的颜色都会被改变(白变成黑,黑变成白),问你将所有棋子变成 ...
- ParseUrl
#!/usr/bin/python # coding:utf-8 import re import urlparse # 解析url def ParseUrl(url): if not re.sear ...
- Node.js学习笔记(3)--url.parse方法
说明(2017-5-2 14:23:47): 1. index.html <!DOCTYPE html> <html lang="en"> <head ...
- 提取nmap扫描出来的xml文件
代码: <?php $file_path = "xiamen_scan_ok.xml"; $file = fopen($file_path, "r"); ...
- java框架篇---struts之OGNL详解
OGNL(Object Graph Navigation Language),是一种表达式语言.使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性.调用Java对象树的方法. ...
- mysql多表查询及其 group by 组内排序
//多表查询:得到最新的数据后再执行多表查询 SELECT *FROM `students` `st` RIGHT JOIN( //先按时间排序查询,然后分组(GROUP BY ) SELECT * ...
- PHP调用JAVA的WebService简单实例
使用PHP调用JAVA语言开发的WebService.客户端提交两个String类型的参数,服务端返回一个对象类型.服务端使用AXIS-1.4作为SOAP引擎.客户端为PHP5.2.9,使用NuSOA ...
- 前端CSS - 相对定位,绝对定位,固定定位
前端CSS - 相对定位,绝对定位,固定定位 1.1 相对定位 position:relative 相对定位,就是微调元素位置的.让元素相对自己原来的位置,进行位置的微调. 也就是说,如果一个盒子想进 ...
- Entity Framework应用:EntityFramework DataBase First模式
在这篇文章中讲解如何使用EF的DbFirst模式实现数据的增删改查 一.新建控制台应用程序,然后右键->添加新建项,选择数据里面的实体数据模型: 然后点击添加 二.选择来自数据库的EF设计器,并 ...
- SWT中ole/activex实践--操作word的一个例子
http://setting.iteye.com/blog/747295 ———————————————————————————————————————————————— 这几年,做了很多word/e ...