怎么使用node.js进行快速截图?

写文章的时候经常需要插入图片,插入现有的图片很简单,有时候制作一些优秀的网站列表的时候需要添加网页截图, 这个过程非常枯燥乏味,可以考虑开发一个命令行工具传入一个url,然后生成页面截图。

使用node-webshot进行网页截图

用到的npm模块有yargs和node-webshot,关于yargs的文章参考这里从零开始打造个人专属命令行工具集——yargs完全指南

node-webshot是调用phantomjs来生成网页截图的,phantomjs是非常有名的npm项目,相当于一个脚本版的WebKit浏览器 ,通过phantomjs可以使用脚本 和网页进行交互,所以phantomjs经常用来进行网页自动化测试。

phantomjs会和普通的浏览器一样加载完整的网页内容,然后在内存里面进行渲染,虽然肉眼看不到它渲染的页面,但是通过生成图片就可以看到了,node-webshot使用的就是phantomjs的render接口来获取网页截图的。

node-webshot生成谷歌首页的示例代码:


  1. var webshot = require('webshot'); 
  2.  
  3. webshot('google.com', 'google.png', function(err) { 
  4.   // screenshot now saved to google.png 
  5. }); 
  6. phantomjs生成谷歌首页的示例代码: 
  7.  
  8. var page = require('webpage').create(); 
  9. page.open('http://github.com/', function() { 
  10.   page.render('github.png'); 
  11.   phantom.exit(); 
  12. }); 

那为什么不直接使用phantomjs呢?一个字懒!

另外node-webshot还对文件读写进行了简单的封装,相信任何熟悉node.js的开发人员,都能很简单的写出这样的接口,但是既然轮子好用就不要自己造了。

node-webshot流式调用的写法:


  1. var webshot = require('webshot'); 
  2. var fs      = require('fs'); 
  3.  
  4. var renderStream = webshot('google.com'); 
  5. var file = fs.createWriteStream('google.png', {encoding: 'binary'}); 
  6.  
  7. renderStream.on('data', function(data) { 
  8.   file.write(data.toString('binary'), 'binary'); 
  9. }); 

node-webshit还支持生成移动版的网页截图:


  1. var webshot = require('webshot'); 
  2.  
  3. var options = { 
  4.   screenSize: { 
  5.     width: 320 
  6.   , height: 480 
  7.   } 
  8. , shotSize: { 
  9.     width: 320 
  10.   , height: 'all' 
  11.   } 
  12. , userAgent: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_2 like Mac OS X; en-us)' 
  13.     + ' AppleWebKit/531.21.20 (KHTML, like Gecko) Mobile/7B298g' 
  14. }; 
  15.  
  16. webshot('flickr.com', 'flickr.jpeg', options, function(err) { 
  17.   // screenshot now saved to flickr.jpeg 
  18. }); 

最后再把yargs和node-webshot进行集成,可惜这部分工作人家也帮我们做好了,直接安装就行。


  1. npm isntall -g webshot-cli 

使用desktop-screenshot进行系统截图

desktop-screenshot是一个跨平台的系统截图项目,用法和node-webshot类似,只是少了一个url参数。


  1. var screenshot = require('desktop-screenshot'); 
  2.  
  3. screenshot("screenshot.png", function(error, complete) { 
  4.     if(error) 
  5.         console.log("Screenshot failed", error); 
  6.     else 
  7.         console.log("Screenshot succeeded"); 
  8. }); 

这个是我的系统截图

问题是我用调用命令行的时候这个窗口也会出现在截图上面,而且没有太好的办法来去除这个窗口,系统截图还是使用windows自带的好用点。

图片优化

最后介绍两个图片优化的工具

svgo使用用来优化svg图片,svg将会代替icon font成为新的趋势,详情阅读github的从icon font切换到svg的文章Delivering Octicons with SVG,不服来辩。

作者:ideras.me

来源:51CTO

时间: 2024-11-04 21:45:20

怎么使用node.js进行快速截图?的相关文章

基于node.js的快速开发透明代理_javascript技巧

但是最近服务器端js的火爆确实因为node.js项目.在velocity china 2010大会Douglas Crockford(Yahoo!)也有一个topic<卷土重来:服务器端JavaScript>提到node.js.关于node.js的详细资料请google.       node.js的非常大的一个特点就是事件驱动,在开发服务器端服务的时候显得非常方便.昨晚在新浪的@timYang也提到了node.js,估计新浪微博也注意到了它的优点.同时,淘宝最近也表示对node.js有相当的

koahubjs 更新 0.07,Node.js web 快速开发框架

koahubjs 更新至 0.07 1.更新启动文件 // src/index.js启动文件 import Koahub from "koahubjs"; //默认app是项目目录 const app = new Koahub(); app.getKoa();获取koahubjs实例化,支持自定义koa中间件 app.run(3000); 2.更新koahubjs-demo 创建www目录 创建src/index.js 移除start.js 文章转载自 开源中国社区 [http://w

2014年最火的Node.JS后端框架推荐_node.js

Node.js框架是可以帮助你建立网站应用服务的javascript框架.它可以帮助你更快地开发Web应用 Node.js 是基于Chrome的JavaScript运行环境.可方便地构建快速.可扩展的网络应用.节点. 当涉及到Web应用程序的开发,你就需要JS框架,加快你的开发过程. Node.js有非常多不同类型的框架,如MVC框架,REST API和generators,全栈框架,大量的服务器库,它完全能够提供Web服务,无需使用Apache等外部软件. Node.js使用谷歌的V8 Jav

穆客带你快速定位Node.js内存泄露

在7月7日的云栖TechDay活动上,来自阿里云的穆客给大家分享了<如何快速定位Node.js内存泄露>话题.此次分享主要包括Node.js和APM的简单介绍.Node.js内存管理.Node.js内存泄露及其排查过程四个方面. 下面是现场分享观点整理. 大家好,我是来自阿里云的穆客,今天分享的是关于Node.js方面的故障排查.内存泄露的话题. Node.js和APM 很多人应该都知道Node.js,它是一个运行于服务端的基于Chrome V8引擎的 JavaScript 运行环境,Node

如何快速部署Node.js项目

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效,非常适合运行在分布式设备的数据密集型的实时应用.Node.js 的包管理器 npm,是全球最大的开源库生态系统. 典型的应用场景包括: 实时应用:如在线聊天,实时通知推送等等(如socket.io) 分布式应用:通过高效的并行I/O使用已有的数据 工具类应用:海量的工具,小到前端压缩部署(如g

十大 Node.js 的 Web 框架,快速提升工作效率

Node.js 系统含有多种不同的结构,如 MVC.全栈.REST API 和生成器等.这些结构不仅提升了 Web 应用的开发效率,也优化了开发过程.在这里,我们收集整理了十个高效的 Node.js 框架,希望对你有帮助. 1.Node.js 开发框架 Sail.js Sails.js 就像是 Node.js 平台上的 Rails 框架.这是一个可靠可伸缩的开发框架,面向服务的架构,提供数据驱动的 API 集合.用来开发多玩家游戏.聊天应用和实时面板引用非常方便,也可用于开发企业级 Node.j

快速掌握Node.js环境的安装与运行方法_node.js

安装程序NodeJS 提供了一些安装程序,都可以在 nodejs.org 这里下载并安装. Windows 系统下,选择和系统版本匹配的 .msi 后缀的安装文件.Mac OS X 系统下,选择 .pkg 后缀的安装文件. 编译安装Linux 系统下没有现成的安装程序可用,虽然一些发行版可以使用 apt-get 之类的方式安装,但不一定能安装到最新版.因此 Linux 系统下一般使用以下方式编译方式安装 NodeJS. 1.确保系统下 g++ 版本在 4.6 以上,python 版本在 2.6

在Docker快速部署Node.js应用的详细步骤_node.js

一.前言 可能还有一些同学不了解docker这个项目,docker是由go语言编写的,一个快速部署的轻量级虚拟技术项目,他允许开发人员将自己的程序和运行环境一起打包,制作成一个docker的image(镜像),这样部署到服务器上,也只需要下载这个image就可以将程序跑起来,免去每次都安装各种依赖和环境的麻烦,还能够做到应用程序之间的隔离 二.实现准备 我会先创建一个简单的Node.js web app,来构建一个镜像.然后基于这个Image运行一个container.从而实现快速部署. 由于网

node.js连接mongoDB数据库 快速搭建自己的web服务_node.js

一.写在前面   人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二.安装node.js   接触过后端开发的人都知道,首先要安装服务.作为新手,肯定是选择最简单的可视化安装了(傻瓜式下一步,其它的方式等熟悉相关操作后自然就会了的),通过官网http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi 下载电脑适配的安装包(这个是w