tilestrata-sharp插件通过使用libvips的sharp库来转换处理图片。对于图片处理的一些方法参数都可以从 sharp 的官方文档中来找寻,这个插件相当于起到了一个搭桥铺路的作用,核心依然是 sharp。
demo 项目可以参考tilestrata-sample-code
1. 安装
$ npm install sharp --save $ npm install tilestrata-sharp --save
|
2. 使用
插件官网中对于使用的说明非常简单,因为插件本身不包含处理图片的逻辑,所以更多的使用方法得去sharp中找寻
const tilestrata = require('tilestrata') const mapnik = require('tilestrata-mapnik') const sharp = require('tilestrata-sharp') const server = tilestrata()
server .layer('world_merc_sharp') .route('tile.png') .use( mapnik({ pathname: 'style/world.xml' }) ) .use( sharp(function(image, sharp) { return image .resize(256) .rotate(180) .greyscale() }) )
server.listen(9527)
|
3. 效果
demo 项目可以参考tilestrata-sample-code
下图是原始的瓦片样式:
在使用了 sharp 插件进行了旋转 180°,灰度处理之后,如下所示:
4. 代码浅析
这个插件比较简单,属于transform
类型,返回 buffer 给 tilestrata 之前会根据用户设置的回调函数里面的处理规则,调用sharp
处理成新的 buffer,然后再返回。
transform: function(server, req, buffer, headers, callback) { var image;
try { image = sharp(buffer); fn(image, sharp); } catch (err) { return callback(err); }
image.toBuffer(function(err, buffer, info) { if (err) return callback(err); headers['Content-Type'] = 'image/' + info.format; callback(null, buffer, headers); }); }
|