前端开发中,处理图片是一项常见的任务,如何快速地对图片进行处理和定制是非常重要的。npm 包 pic-framer 正是为此而生。
pic-framer 是一款基于 Node.js 的图片处理工具,可以实现图片的缩放、旋转、裁剪、加框等操作,同时具有高度的定制性和扩展性,其灵活性也使其在前端工程师中广受欢迎。
本文将介绍 pic-framer 的使用方法,涉及命令行操作、API 调用、参数解析等方面的内容,以期为广大前端工程师提供更高效的图片处理方案。
安装
pic-framer 是一款基于 Node.js 的 npm 包,安装非常简单。假设已经具备了 Node.js 环境,直接在命令行输入以下指令即可完成安装:
npm install -g pic-framer
命令行操作
pic-framer 最大的特点之一是支持命令行操作。下面介绍几个常见的命令:
1. 缩放图片
pic-framer 的缩放功能提供了两种操作方式:按比例缩放和指定长宽缩放。下面分别介绍。
a. 按比例缩放
缩放比例通过 scale 参数指定,例如:
pic-framer input.jpg output.jpg --scale 0.5
参数说明:
- input.jpg:输入图片路径
- output.jpg:输出图片路径
- --scale 0.5:缩放比例为 0.5
上述命令将 input.jpg 缩小一倍输出到 output.jpg。
b. 指定长宽缩放
长宽缩放通过 width 和 height 参数指定,例如:
pic-framer input.jpg output.jpg --width 800 --height 600
参数说明:
- input.jpg:输入图片路径
- output.jpg:输出图片路径
- --width 800:指定图片宽度为 800
- --height 600:指定图片高度为 600
上述命令将 input.jpg 缩放到宽度 800,高度 600,并输出到 output.jpg。
2. 旋转图片
旋转图片非常简单,只需要通过 angle 参数指定旋转角度即可,例如:
pic-framer input.jpg output.jpg --angle 90
参数说明:
- input.jpg:输入图片路径
- output.jpg:输出图片路径
- --angle 90:旋转角度为 90 度
上述命令将 input.jpg 顺时针旋转 90 度输出到 output.jpg。
3. 裁剪图片
裁剪图片需要指定裁剪区域的左上角坐标和宽度高度,因此 pic-framer 提供了分别对应的参数,例如:
pic-framer input.jpg output.jpg --cropX 100 --cropY 200 --cropWidth 300 --cropHeight 400
参数说明:
- input.jpg:输入图片路径
- output.jpg:输出图片路径
- --cropX 100:裁剪区域的左上角横坐标为 100
- --cropY 200:裁剪区域的左上角纵坐标为 200
- --cropWidth 300:指定裁剪区域的宽度为 300
- --cropHeight 400:指定裁剪区域的高度为 400
上述命令将 input.jpg 的左上角横坐标为 100,纵坐标为 200,宽度为 300,高度为 400 的区域裁剪出来输出到 output.jpg。
4. 加边框
加边框非常灵活,pic-framer 提供了多种配置项供选择。下面列出常用的几种:
a. 加简单边框
在图片周围加上同一颜色的边框,例如:
pic-framer input.jpg output.jpg --borderSimple true --borderColor '#fff' --borderSize 10
参数说明:
- input.jpg:输入图片路径
- output.jpg:输出图片路径
- --borderSimple true:开启简单边框模式
- --borderColor '#fff':边框颜色为白色(#fff)
- --borderSize 10:边框大小为 10
上述命令将 input.jpg 周围加上白色边框,大小为 10,输出到 output.jpg。
b. 加复杂边框
在图片周围加上带边角、内外阴影等效果的复杂边框,例如:
pic-framer input.jpg output.jpg --borderComplex true --borderColor '#fff' --borderSize 10 --borderInnerShadow 10 --borderOuterShadow 30 --borderRadiusPercentage 50
参数说明:
- input.jpg:输入图片路径
- output.jpg:输出图片路径
- --borderComplex true:开启复杂边框模式
- --borderColor '#fff':边框颜色为白色(#fff)
- --borderSize 10:边框大小为 10
- --borderInnerShadow 10:内阴影大小为 10
- --borderOuterShadow 30:外阴影大小为 10
- --borderRadiusPercentage 50:边框角度为圆角(50%)
上述命令将 input.jpg 周围加上带圆角、内外阴影效果的白色边框,边框大小为 10,内外阴影大小分别为 10 和 30,输出到 output.jpg。
API 调用
pic-framer 不仅支持命令行操作,还可以通过 API 调用。下面介绍如何通过 Node.js 调用 pic-framer。
首先,需要安装 pic-framer 包:
npm install --save pic-framer
然后,在 Node.js 中通过 require 载入:
const picFramer = require('pic-framer');
pic-framer 的 API 参数和命令行参数基本一致,因此可以通过设置 options 对象来实现各种图片操作:
1. 缩放图片
-- -------------------- ---- ------- -- ------- ----------------- ------ ------------ ------- ------------- ------ ---- ------- ----- ------ --- -- -------- -- -------------------- ------------ -- -------------------- -- -------- ----------------- ------ ------------ ------- ------------- ------ ---- ------- ---- ------ ---- -- -------- -- -------------------- ------------ -- --------------------
2. 旋转图片
picFramer.rotate({ input: 'input.jpg', output: 'output.jpg', angle: 90 }) .then(() => console.log('done')) .catch((err) => console.error(err));
3. 裁剪图片
-- -------------------- ---- ------- ---------------- ------ ------------ ------- ------------- -- ---- -- ---- ------ ---- ------- --- -- -------- -- -------------------- ------------ -- --------------------
4. 加边框
-- -------------------- ---- ------- -- ------- ------------------ ------ ------------ ------- ------------- ------- ----- ------ ------- ----- -- -- -------- -- -------------------- ------------ -- -------------------- -- ------- ------------------ ------ ------------ ------- ------------- -------- ----- ------ ------- ----- --- ------------ --- ------------ --- ------------- ----- ----------------------- -- -- -------- -- -------------------- ------------ -- --------------------
总结
本文介绍了基于 Node.js 的 npm 包 pic-framer 的使用方法,详细介绍了其命令行操作和 API 调用两种方式,并提供完整的代码示例。pic-framer 不仅具有灵活的定制性和扩展性,而且使用简单高效,能够提升前端开发中的图片处理效率,希望对广大前端工程师有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005555681e8991b448d2885