[转]Phantomjs实现获取网页快照并生成缩略图

Shell脚本实现获取网页快照并生成缩略图

  这篇文章主要介绍了Shell脚本实现获取网页快照并生成缩略图,本文获取网页快照使用phantomjs、生成缩略图使用ImageMagick,需要的朋友可以参考下

获取网页快照并生成缩略图可分两步进行:

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,然后取第一屏内容。

调用命令如下:

复制代码 代码如下:

phantomjs snap.js http://www.baidu.com baidu.png

注意:这里执行命令的用户需要对目录有写权限。

3、效果

获取的截图如下:

生成缩略图

生成缩略图用的是ImageMagick工具,ImageMagick是个非常强大的图片处理工具,可对图片进行转化(格式转换、缩放、剪切、模糊、反转等)、屏幕截图、图片显示等,详细用法可参考  我的ImageMagick使用心得 一文。

1、安装

redhat系列可使用yum安装:

复制代码 代码如下:

# yum install ImageMagick ImageMagick-devel

其他平台安装请参考官方网站:http://www.imagemagick.org/script/binary-releases.php,根据你的系统选择相应的包或自己编译源码。

2、调用

我们这里只使用图片缩放工具,语法为:

代码如下:

convert -resize 320x240 baidu.png baidu_thumbnail.png

默认是按比率缩放,如果要强制缩放,可以在尺寸后面加感叹号:

代码如下:

convert -resize 320x240! baidu.png baidu_thumbnail.png

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
时间: 2024-08-02 23:59:55

[转]Phantomjs实现获取网页快照并生成缩略图的相关文章

shell脚本获取网页快照并生成缩略图

获取网页快照并生成缩略图可分两步进行: 1.获取网页快照 2.生成缩略图 获取网页快照 这里我们用 phantomjs 来实现.关于 phantomjs 的详细用法可参考 官方网站 . 1.安装 我的环境是CentOS6.5,安装时直接下载 tarball 然后解压即可. # wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-i686.tar.bz2 # tar -jxvf phantomjs-1

php获取远程图片url生成缩略图的方法

getimg.php <?php /** * *函数:调整图片尺寸或生成缩略图 *返回:True/False *参数: * $Image 需要调整的图片(含路径) * $Dw=450 调整时最大宽度;缩略图时的绝对宽度 * $Dh=450 调整时最大高度;缩略图时的绝对高度 * $Type=1 1,调整尺寸; 2,生成缩略图 */ $phtypes=array('img/gif', 'img/jpg', 'img/jpeg', 'img/bmp', 'img/pjpeg', 'img/x-png

java调用phantomjs采集ajax加载生成的网页

java调用phantomjs采集ajax加载生成的网页 日前有采集需求,当我把所有的对应页面的链接都拿到手,准备开始根据链接去采集(写爬虫爬取)对应的终端页的时候,发觉用程序获取到的数据根本没有对应的内容,可是我的浏览器看到的内容明明是有的,于是浏览器查看源代码也发觉没有,此时想起该网页应该是ajax加载的.不知道ajax的小朋友可以去学下web开发啦. 采集ajax生成的内容手段不外乎两种.一种是通过http观察加载页面时候的请求,然后我们模仿该请求去得到对应的内容,第二种则是模仿浏览器行为

生成缩略图时报GDI+中发生一般性错误

最近由于业务需要要写一个生成缩略图并能设置图片质量的功能,本来这是一件so easy的事,以前也干过,可是却遇到了问题.话不多说先看代码 /// <summary> /// 等比生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)</param> /// <param name="thumbnailPath">缩略图路径(物理

C#生成缩略图

[csharp] view plain copy print? /// 生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径</param> /// <param name="thumbnailPath">缩略图路径</param> /// <param name="width">缩略图宽度</par

[原创]超强C#图片上传,加水印,自动生成缩略图源代码

<%@ Page Language=“C#“ AutoEventWireup=“true“ %> <%@ Import Namespace=“System“ %> <%@ Import Namespace=“System.IO“ %> <%@ Import Namespace=“System.Net“ %> <%@ Import NameSpace=“System.Web“ %> <%@ Import NameSpace=“Legalsof

使用phantomjs抓取JS动态生成的页面

关于phantomjs phantomjs实现了一个无界面的webkit浏览器.虽然没有界面,但dom渲染.js运行.网络访问等API都很完整.可以利用phantomjs来下载js生成的页面. 下载phantomjs(http://phantomjs.org/download.html).解压到任意目录,在Windows下将包含phantomjs.exe的目录添加到系统路径.Linux下 phantomjs2.0还没有提供下载的包,需要手动编译.centos 安装phantomjs步骤如下: 在

根据图片URL裁切并生成缩略图

package jtest; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.awt.image.CropImageFilter; import java.awt.image.FilteredImageSource; import java.awt.image.ImageFilter; import

.net又一个生成缩略图的方法,不变形

生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 1 /// <summary> 2 /// 为图片生成缩略图 by 何问起 3 /// </summary> 4 /// <param name="phyPath">原图片的路径</param> 5 /// <param name="width">缩略图宽</param> 6 ///