热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Node裁切图片的方法

1、安装jimp$npminstall--savejimp2、读取本地图片切图jimp.read(本地图片地址,function(err,img){if(err)throwerr

        1、安装 jimp

$ npm install --save jimp

        2、读取本地图片切图

jimp.read('本地图片地址', function (err, img) {if (err) throw errimg.crop(x坐标起点, y坐标起点, width最终图片宽度, height最终图片高度).write(result)
})

        3、读取http图片,转成buffer,切成buffer数据

const options = {headers: {'User-Agent': 'Mozilla/5.0',}
}
http.get(imgUrl, options ,(response) => {let imgData = ''response.setEncoding('binary')response.on('data', (chunk) => {imgData += chunk})response.on('end', () => {const imgBuffer = new Buffer.from(imgData, 'binary')jimp.read(imgBuffer).then((img) => {const topLeftImage = img.clone() // copy jimp对象进行操作const topRightImage = img.clone()const bottomLeftImage = img.clone()const bottomRightImage = img.clone()const topLeft = topLeftImage.crop(64, 64, 256, 256)topLeft.getBuffer('image/jpeg', (_, buf) => {consoel.log(buf)})const topRight = topRightImage.crop(320, 64, 256, 256)topRight.getBuffer('image/jpeg', (_, buf) => {consoel.log(buf)})const bottomLeft = bottomLeftImage.crop(64, 320, 256, 256)bottomLeft.getBuffer('image/jpeg', (_, buf) => {consoel.log(buf)})const bottomRight = bottomRightImage.crop(320, 320, 256, 256)bottomRight.getBuffer('image/jpeg', (_, buf) => {consoel.log(buf)})}).catch(err => {console.error(err)})})
}).on('error', function (err) {console.log('出错!', err)
})

        4、graphicsMagick、imageMagick GM

        需要下载工具graphicsMagick | imageMagick并配置环境变量

$ npm i gm

/*** 裁剪图片* @param srcImg 待裁剪的图片路径* @param destImg 裁剪后的图片路径* @param width 宽度* @param height 高度* @param x x坐标* @param y y坐标*/
function cropImgHandle(srcImg, destImg, width, height, x, y) {gm(srcImg).crop(width, height, x, y).write(destImg, function (err) {if (err) {return console.log(err)} else {console.log('success')}})
}

        到此 Node 裁切图片的方法介绍完成。


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
author-avatar
z1452
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有