后台(node) 使用images模块来处理剪裁图片

前台上传图片,剪裁使用jcrop。传给后台的裁剪数据

    imgData.x=c.x;
    imgData.y=c.y;
    imgData.w=c.w;
    imgData.h=c.h;

后台接收后获取到的参数信息

 { imgcutX: '19',
  imgcutY: '47',
  imgcutW: '104',
  imgcutH: '132',
  imgOriginWH: '463,462' }
 [ { fieldname: 'f1',
    originalname: 'timg.jpg',
    encoding: '7bit',
    mimetype: 'image/jpeg',
    destination: './static/upload',
    filename: '53e5b756556f916424bd33e8425c77b0',
    path: 'static\\upload\\53e5b756556f916424bd33e8425c77b0',
    size: 4129 } ]
    

处理部分的代码:

    var patharr=req.files[0].path.split('\\')
    patharr.pop();
    var newP=patharr.join('\\')+'\\';
    var picName=new Date().getTime()+pathLib.parse(req.files[0].originalname).ext
    var newfileName=newP+picName
    fs.rename(req.files[0].path,newfileName,function(err){
        if(err){
          console.log('失败')
          return;
          res.status(500).send('上传图片失败!').end();
        }else{
           images(images('./static/upload/'+picName),req.body.imgcutX,req.body.imgutY,req.body.imgcutW,req.body.imgcutH).resize(100).save('./static/upload/n-'+picName)
        }
        

这样写并没有裁剪图片,而是把图片整张压缩成了x,y,w,h这么小了。是images用错了?还是前台传的数据有问题?希望会的大佬答一下...

阅读 2.3k
1 个回答

可以确定的是,后端images使用没错。你去看一下前端传来的图片的尺寸之类的吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题