如何在node js中将图像切成多个部分?

时间:2018-08-16 10:24:51

标签: javascript node.js slice cairo node-canvas

我尝试使用 image-slice 通过节点js切成多个部分。

我尝试安装 npm i image-to-slices sudo port install cairo npm i canvas brew install pkg -config cairo pango libpng jpeg giflib ,但在服务器端node.js上仍显示错误 require node-canvas

这是我尝试切片的图像:

  var imageToSlices = require('image-to-slices');

 exports.sliceImage =(请求,响应)=> {


var lineXArray = [100,200];
var lineYArray = [100,200];
var source ='./public/images/Bitmap001.png'; //宽度:300,高度:300

 imageToSlices(source,lineXArray,lineYArray,{
 saveToDir:“ ./ public / images / bit001.png”
 },function(){
 console.log('源图像已被切成9个部分!');
  });


  } // sliceImage
 

控制台输出错误:

 错误:在服务器端Node.js上需要节点画布
在ImageClipper .__ createImage(/Users/parameshv/pyrky_nodejs/node_modules/image-clipper/lib/clipper.js:456:13)
在ImageClipper.loadImageFromUrl(/Users/parameshv/pyrky_nodejs/node_modules/image-clipper/lib/clipper.js:83:20)
在ImageClipper.image(/Users/parameshv/pyrky_nodejs/node_modules/image-clipper/lib/clipper.js:120:10)
在imageClipper(/Users/parameshv/pyrky_nodejs/node_modules/image-clipper/lib/index.js:36:15)
在ImageToSlices.slice(/Users/parameshv/pyrky_nodejs/node_modules/image-to-slices/lib/image-to-slices.js:212:3)
在ImageToSlicesFactory(/Users/parameshv/pyrky_nodejs/node_modules/image-to-slices/lib/index.js:22:17)
在export.sliceImage(/Users/parameshv/pyrky_nodejs/app/controllers/ApiController.js:843:1)
在Layer.handle [作为handle_request](/Users/parameshv/pyrky_nodejs/node_modules/express/lib/router/layer.js:95:5)
在下一个(/Users/parameshv/pyrky_nodejs/node_modules/express/lib/router/route.js:137:13)
在Route.dispatch(/Users/parameshv/pyrky_nodejs/node_modules/express/lib/router/route.js:112:3)
 

1 个答案:

答案 0 :(得分:1)

在代码中进行挖掘,我发现您可以通过在配置中使用canvas来指定要使用的clipperOptions

尝试一下:

var imageToSlices = require('image-to-slices');
var lineXArray = [100, 200];
var lineYArray = [100, 200];
var source = './public/images/Bitmap001.png'; // width: 300, height: 300

imageToSlices(source, lineXArray, lineYArray, {
    saveToDir: '.',
    clipperOptions: {
        canvas: require('canvas')
    }    
}, function() {
    console.log('the source image has been sliced into 9 sections!');
});