windows下的node-canvas历程
背景:由于在前期开发的过程中,对前端的小图片采用了css-sprite,开始的时候都是在http://spritegen.website-performance.org/站点上合成图片及样式的,但是某天该站点突然不能访问,开始还怀疑是运维把站点给屏蔽了,后来才知道这个站点真的挂了,顿时觉得使用web站点上的工具太没有安全感了,所以决定在本地搭建一个css-sprite的工具环境。
所以接下来就是nodejs的css-sprite之旅了。nodejs处理图片需要使用到node-canvas这个图像模块,在windows环境下搭建整个环境还是需要几个步骤:
1.安装Python 2.7版本,3.0以上不支持;下载地址:https://www.python.org/downloads/
2.安装node-gyp模块,使用命令行:npm install -g node-gyp;
3.安装Visual C++ 2010 Express,编译时需要使用,下载地址:http://www.visualstudio.com/zh-cn/downloads/download-visual-studio-vs#DownloadFamilies_4
4.下载GTK包并解压在C:\GTK目录下并添加C:\GTK\bin到系统path路径中;
(GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off tools to complete application suites.)
win64下载地址(推荐):http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/gtk+-bundle_2.22.1-20101229_win64.zip
5.安装node-canvas模块,使用命令行:npm install -g node-canvas;
编译成功后,在全局模块目录下会存在npm\node_modules\canvas\build\Release\canvas.node文件,在此目录下使用node命令行执行var c = require('canvas');如果输出undefine则编译成功;
到此,不知道你已经踩过几个坑了,反正我踩好些个。
1.由于我之前安装了Python 3.0以上版本,故在node-canvas编译时报错,此错误在错误提示信息中很明显,直接下载个Python 2.7版本并改写path路径即可解决。
2.开始时我是在http://www.gtk.org/download/win64.php下载all-in-one bundle(即GTK+的所有编译文件),这个已是当前最新版本gtk+-bundle_3.6.4-20131201_win64,
但是在使用该版本编译时会提示C:\GTK\lib\libpng.lib未找到的错误,这是一个图片处理的核心库文件,不知道包提供者为什么没有把libpng给编译成lib文件。这个问题编译出来也很明显,所以就在GTK+站点上下载了libpng模块,提取其中的libpng.lib文件,libpng1.5版本没有提供libpng.lib文件,libpng1.4版本中有提供,所以我就使用了1.4版本中的libpng.lib文件,编译成功后执行var c = require('canvas');提示模块缺失,就使用了depends检查Release目录下canvas.node的dll依赖,发现存在几个dll缺失的情况,从系统system32中查找相应的dll并拷贝到C:\GTK\bin目录下,运行var c = require('canvas');输出为undefined。正确。
depends下载地址:http://www.dependencywalker.com/
3.运行npm install spritegen下载spritegen模块,该模块调用canvas做了些css-sprite的功能,运行其中的test,执行失败,提示libpng的1.4与1.5版本使用冲突,具体是C:\GTK\include\libpng15使用了libpng 1.5版本但是在问题2解决的过程中我使用了1.4版本中的lib文件,由于站点上下载的libpng1.5版本未能提供.lib文件,所以我尝试使用vc++ 2010版本编译,但是未能成功,由于受限于公司开发环境也不想在vs版本上做过多纠缠,所以就想在web上download一个libpng.lib文件,但是所download的文件均未能正常编译。最后放弃了GTK+的最新版本使用了gtk+-bundle_2.22.1-20101229_win64版本,node-canvas正常编译,且执行spritegen test成功,即canvas模块能正常使用了。
一切问题解决完就是在spritegen代码的基础上增加自己的功能了,保证和spritegen.website-performance.org站点生成出来的格式一致,这样也就不用去改以前写好的css样式了,而且也可以添加自己想要的功能,最最重要的是在本地生成,安全便捷可重用^_^。
参考:
https://github.com/Ancestry/spritegen
http://delarre.net/posts/installing-node-canvas-for-windows/
https://github.com/LearnBoost/node-canvas/wiki/Installation---Windows#installing-python-for-windows
http://www.gtk.org/download/win64.php
windows下的node-canvas历程的更多相关文章
- Windows 下安装 Node.js
搭建博客系列的 Node.js 环境安装.Windows 下面安装可以通过图形化界面进行安装,非常方面. 1.打开 Node.js 官网,下载对应版本的安装包(msi 后缀的) 2.双击运行下载的程序 ...
- windows下安装node【转】
windows下安装node报错2503.2502 windows下命令行安装,首先使用管理员权限获取cmd msiexec /package node-v10.16.0-x64.msi 根据提示一步 ...
- windows下安装node.js及环境配置、部署项目
windows下安装node.js及环境配置.部署项目 一.总结 一句话总结: 安装nodejs软件:就像普普通通的的软件那样安装 配置nodejs安装的全局模块的环境变量 并且安装cnpm(比如cn ...
- Windows下安装node
1.安装node及npm Windows下安装软件都是傻瓜式安装,首先登陆官网(https://nodejs.org/en/)下载对应的node程序,然后双击进行安装.安装过程基本上是点击'Next' ...
- windows下搭建node.js及npm的工作环境
近期在研究数据可视化D3框架,决定在windows下搭建一个nodejs及npm的工作环境,在网上查了n篇文章,别管是编译源代码安装也好.还是使用node.msi格式安装包也好,总是有问题.终于,功夫 ...
- 在Windows下开发Node.js的C/C++原生扩展
准备工作 (1)本机系统说明:本人机器为win7 64位,32位也可以. (2)软件安装: VISUAL C++ 2010 EXPRESS(Visual Studio 2010也可以): window ...
- [转]Windows下配置Node.js和Cordova
本文转自:https://blog.csdn.net/weixin_37730482/article/details/74388056?locationNum=3&fps=1 本文讲解在win ...
- Windows 下 nvm, node, npm 的下载、安装与配置
主要解决的问题 下载安装完 nvm 和 node 后,缺失 npm 文件 执行 jasmine 等命令时提示「不是内部或外部命令...」及全局变量的设置 下载与安装 一.nvm github 下载地址 ...
- Windows下配置node和npm
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Node.js 的使用包管理器 ...
- 基于windows下,node.js之npm
1.下载node.js一路安装下去 在开始 node文件夹下,打开cmd 2.创建一个开发目录 mkdir reactQa && cd reactQa 3.初始化一个nmp的开发环境 ...
随机推荐
- css框模型
元素的背景是内容.内边距和边框区的背景. css中:width 和 height 指的是内容区域的宽度和高度.增加内边距.边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸. bootstr ...
- boost:thread使用实例
/************************************************************************/ /*功能描述: boost thread使用实例 ...
- SQL 2008配置管理工具服务显示 远程过程调用失败0x800706be
摘自: http://www.cnblogs.com/cool-fire/archive/2012/09/15/2686131.html 基本上我的解决方案也是根据该文提示 操作的. 因为 我后来 装 ...
- css中float left与float right的使用说明
转自:http://www.jb51.net/css/33740.html 脚本之家 No! 要注意以下几点: 1. 浮动元素会被自动设置成块级元素,相当于给元素设置了display:block( ...
- linux系统下将php和mysql命令加入到环境变量中的方法
在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行 “php -v”命令查看当前php版本信息时时 ...
- 例题6-10 The Falling Leaves,UVA699
这道题我的思路是先通过递归构建树,然后进行遍历将位置和保存在map映射中,最后按顺序输出map集合中的值. 至于如何遍历,我是依次尝试了宽度优先遍历和深度优先遍历,当然这都是可以的.不过期间写错了很多 ...
- 怎样使android的view动画循环弹动
在res中建立文件夹anim,分别写下cycles.xml,shake1.xml,shake2.xml cycles.xml: <?xml version="1.0" enc ...
- TextView字符串波浪式跳动--第三方开源---JumpingBeans
在github上有一个开源项目:JumpingBeans,其项目主页是:https://github.com/frakbot/JumpingBeans JumpingBeans将一个普通的Androi ...
- How to move the user document folder to D disk[Windows 7]
when you install windows 7 OS, the system ask for you enter username and password, then you have not ...
- STM32F0xx_TIM输出PWM配置详细过程
前言 前面我说过STM32的定时器功能很强大,今天就来总结一下它的另外一个“强大”功能:TIM的比较输出功能,输出可调PWM波形.直接调用函数接口“TIM2_CH1_PWM(uint32_t Freq ...