GitHub:zimo-xiao/snap
介绍
Snap 是一个基于node-canvas(https://github.com/Automattic/node-canvas )封装的轻量级 Node.js 图片压缩/处理库,适合用于批量生成对于浏览器/网络App友好的低损压缩图像。
用Node-Canvas的好处
Canvas是一个浏览器原生的DOM组件。作为一个图形容器,Canvas可以承载/操作Canvas对象内的图形数据,生成或输出浏览器支持的图像。Node-Canvas是一个用Node实现的Canvas对象。
- 压缩:在本地压缩图片,低损耗画质的降低图片容量
- 操作:支持所有浏览器支持的Canvas操作,附加更多只有在Node本地才能实现操作(如文件操作)!
- 网络友好:生成浏览器原生支持的图片格式(JPEG/PNG),节省流量和服务器空间
- 灵活/万能:画画、加文字、渐变… Canvas能干啥他就能干啥
用Snap的好处
Snap项目的灵感源自作者本人的一个图库项目(红砖图库 - 附中的宝藏)。图库项目需要大量储存/压缩略缩图,减少服务器带宽支出,为用户提供更流畅的预览图片体验。后端领域有许多优秀的图像处理库(如sharp,PHPimage);但在Node领域,Canvas依旧是API最多,最灵活,最标准的图像处理库。
- 支持:快速引用,支持绝大部分的流行操作系统/图像格式
- 简易:简单清晰的代码结构,优雅封装的API
- 本地化:优化使用本地硬件和Node本地操作
- 灵活:支持所有Canvas操作,并封装了许多常用操作
- 批量:大量一次性处理图片
- 更多功能:支持读取EXIF信息,支持使用文件Hash来命名
代码
一段简单的入门示例
批量处理图片(使用asyc)
API文档
请移步:zimo-xiao/snap
996.ICU协议
本项目履行996.ICU协议。反对中国互联网行业的内隐形加班文化和违反劳动法的劳务行为;协议原文如下:
版权所有(c)2019 Zimo Xiao
反996许可证版本1.0
在符合下列条件的情况下,特此免费向任何得到本授权作品的副本(包括源代码、文件和/或相关内容,以下统称为“授权作品”)的个人和法人实体授权:被授权个人或法人实体有权以任何目的处置授权作品,包括但不限于使用、复制,修改,衍生利用、散布,发布和再许可:
1. 个人或法人实体必须在许可作品的每个再散布或衍生副本上包含以上版权声明和本许可证,不得自行修改。
2. 个人或法人实体必须严格遵守与个人实际所在地或个人出生地或归化地、或法人实体注册地或经营地(以较严格者为准)的司法管辖区所有适用的与劳动和就业相关法律、法规、规则和标准。如果该司法管辖区没有此类法律、法规、规章和标准或其法律、法规、规章和标准不可执行,则个人或法人实体必须遵守国际劳工标准的核心公约。
3. 个人或法人不得以任何方式诱导、暗示或强迫其全职或兼职员工或其独立承包人以口头或书面形式同意直接或间接限制、削弱或放弃其所拥有的,受相关与劳动和就业有关的法律、法规、规则和标准保护的权利或补救措施,无论该等书面或口头协议是否被该司法管辖区的法律所承认,该等个人或法人实体也不得以任何方法限制其雇员或独立承包人向版权持有人或监督许可证合规情况的有关当局报告或投诉上述违反许可证的行为的权利。
该授权作品是"按原样"提供,不做任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,无论是在合同诉讼、侵权诉讼或其他诉讼中,版权持有人均不承担因本软件或
本软件的使用或其他交易而产生、引起或与之相关的任何索赔、损害或其他责任。
关于作者
Zimo Xiao 肖座
刚20的互联网人,热爱艺术的程序员
GitHub:zimo-xiao
xiaozimo@zuggr.com
喜欢本项目或者支持996.ICU的同学,欢迎star⭐️本项目哦
GitHub:zimo-xiao/snap