返回顶部
首页 > 资讯 > 前端开发 > node.js >Node.js使用gm拼装sprite图片
  • 134
分享到

Node.js使用gm拼装sprite图片

图片jsNode 2022-06-04 17:06:09 134人浏览 薄情痞子
摘要

从设计图切图得到了12个小图标,是按钮的两种状态,然后我就寻思着把他们拼成一张sprite图片. 之前用过gulp的sprite插件,但这次我不想搞的太隆重.拼图我知道有个很好用的命令行工具 Graphic

从设计图切图得到了12个小图标,是按钮的两种状态,然后我就寻思着把他们拼成一张sprite图片.

之前用过gulp的sprite插件,但这次我不想搞的太隆重.拼图我知道有个很好用的命令行工具 GraphicsMagick 及配套的nodejs包gm

首先说下我要拼的图片,我打算将正常状态作为第1行,激活状态作为第2行.这样可以少计算一些background-position.

折腾过程比较痛苦,本来我打算看一下GraphicsMagick与gm的官方文档,结果好多生单词,最后还是放弃了.下面说答案吧:

总的来说有两种方法,

1.使用gm包的append+adjoin方法

这个方法有缺点,就是不能方便的排序成我想要的这种布局.用adjoin我实际上拼了3次图,才最终得到sprite.参考代码如下:


gm('nav1_1.png')
 .append('nav2_1.png','nav3_1.png','nav4_1.png','nav5_1.png','nav6_1.png', true)
 .adjoin().write('./result.png', function(err) {
   console.log(err);
 });
 gm('nav1_0.png')
 .append('nav2_0.png','nav3_0.png','nav4_0.png','nav5_0.png','nav6_0.png', true)
 .adjoin().write('./result1.png', function(err) {
   console.log(err);
 });
 
 gm('result1.png').append('result.png').adjoin()
   .write('nav-icons.png', (err, data) => {
     if(err) console.error(err);
     console.log(data);
   })

代码很初级.

2.使用GraphicsMagick自带的命令行工具

是直接使用GraphicsMagick的命令行(安装后,即可在命令行里使用gm命令),但这里要注意:powershell中使用gm一直报错,需要用cmd并cd到对应目录.win10自作聪明的用powershell默认代替cmd,结果连这种错误都没修复…

gm montage nav*_0.png nav*_1.png -tile 6x2 -geometry +0+0 rrr.png

可以看到我使用了 montage 方法,且分两次传入了图片(图片路径还支持glob表达式), 分两次传入图片路径可以保证先后顺序(因为我就是想拼两行啊).

简单讲一下montage,其中文表述即”蒙太奇”,高大上,但我们这里只用来拼图. 命令之后就是图片路径; 路径之后有个 `-tile` 参数, 用来指定图片的排列方式.6×2就是6列2行.这里有个技巧,如果你想让所有图片排成一行,可以这样 `-tile x1`,即不管列数,只限制为1行,反之, `-tile 1x`则表示只要1列不管有多少行.

-tile参数后是-geometry参数. 其默认值是'120×120>+4+3′,表示”每张小图的最大尺寸是120×120,大于此尺寸的会被缩放(小于的不会放大),图片之间的间隔是横向4纵向3″.

-geometry的参数是按需传的,比如我传的只是+0+0,表示不限制每张图的大小,图片间距为0.

最后一个参数,就是输出拼图结果到rrr.png了.

搞懂这些参数后, 下面的由本方法衍生出来的方法就好理解了.

3.使用gm包执行GraphicsMagick命令行

gm包本身十分强大,但它也提供了生成命令并执行的接口.如上面的命令行, 用gm包可以这么写:


gm().command('montage')
   .in('nav*_0.png')
   // 图片路径分开 in, 不要连在一个 in 里面
   .in('nav*_1.png')
   .in('-tile', '6x2')
   .in('-geometry', '+0+0')
   .write('rrrr.png', (err, a,b,c) => {
     console.log(err, 'a:', a, 'b:', b, 'c:', c);
   });

与直接使用命令行是一样的效果.但这样写成js文件后,下次要用或要发给别人用都更方便了.

--结束END--

本文标题: Node.js使用gm拼装sprite图片

本文链接: https://lsjlt.com/news/12508.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Node.js使用gm拼装sprite图片
    从设计图切图得到了12个小图标,是按钮的两种状态,然后我就寻思着把他们拼成一张sprite图片. 之前用过gulp的sprite插件,但这次我不想搞的太隆重.拼图我知道有个很好用的命令行工具 Graphic...
    99+
    2022-06-04
    图片 js Node
  • 怎么使用Node.js的gm模块处理图片
    本文小编为大家详细介绍“怎么使用Node.js的gm模块处理图片”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Node.js的gm模块处理图片”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,...
    99+
    2024-04-02
  • node.js gm怎么使用
    本篇内容主要讲解“node.js gm怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“node.js gm怎么使用”吧! gm...
    99+
    2024-04-02
  • Nodejs如何使用gm和imageMagick来处理图片
    这篇文章主要介绍“Nodejs如何使用gm和imageMagick来处理图片”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Nodejs如何使用gm和imageMag...
    99+
    2024-04-02
  • 使用Python批量拼接图片
    前言 当需要将多张图像拼接成一张更大的图像时,通常会用到图片拼接技术。这种技术在许多领域中都有广泛的应用,例如计算机视觉、图像处理、卫星图像、地理信息系统等等。在实际应用中,拼接图像可以用于创建全景图像、地图、海报、广告牌等等。 本文将使用...
    99+
    2023-09-28
    python 图像处理
  • CSS怎么使用Sprite雪碧图
    今天小编给大家分享一下CSS怎么使用Sprite雪碧图的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。雪碧图的使用场景静态图片...
    99+
    2023-07-05
  • 如何使用Node.js压缩图片
    这篇文章主要讲解了“如何使用Node.js压缩图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Node.js压缩图片”吧!一、内容简介前段时间开发...
    99+
    2024-04-02
  • 如何在CSS中使用Sprite雪碧图
    本篇文章为大家展示了如何在CSS中使用Sprite雪碧图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。雪碧图的使用场景静态图片,不随用户信息的变化而变化。小图片,容量比较小(2~3k)。图片加载量比...
    99+
    2023-06-08
  • 使用canvas怎么拼合图片并导出
    今天就跟大家聊聊有关使用canvas怎么拼合图片并导出,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。canvas绘图的基本方法,如下:const myCanvas ...
    99+
    2023-06-09
  • Node.js图片处理库sharp的使用
    目录Node.js图片处理库sharp1、sharp2、源码3、sharp的其他操作总结Node.js图片处理库sharp 1、sharp sharp 是 Node.js 平台上相当...
    99+
    2023-01-16
    Node.js图片处理库 Node.js sharp的使用 sharp图片处理库
  • 如何使用node.js爬取知乎图片
    这篇文章主要介绍了如何使用node.js爬取知乎图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。原理初入爬虫的坑,没有太多深奥的理论知识,...
    99+
    2024-04-02
  • 怎么使用node.js爬取知乎图片
    这篇文章主要介绍了怎么使用node.js爬取知乎图片的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用node.js爬取知乎图片文章都会有所收获,下面我们一起来看看吧。原理初入爬虫的坑,没有太多深奥的理论知...
    99+
    2023-06-17
  • node实现封装一个图片拼接插件
    目录前言插件效果1、横向拼接两张图片2、纵向拼接两张图片3、批量拼接3.1 横向拼接长图3.2 纵向拼接长图4、自定义拼接矩阵插件实现1、单张图片拼接2、量拼接3、自定义矩阵拼接插件...
    99+
    2022-11-13
    node封装图片拼接插件 node封装插件
  • 使用Node.js给图片加水印的方法
    一、准备工作: 首先,确保你本地已经安装好了node环境。 然后,我们进行图像编辑操作需要用到一个Node.js的库:images。 这个库的地址是:https://github.com/zhangyuan...
    99+
    2022-06-04
    水印 方法 图片
  • R语言ggplot2拼图包patchwork安装使用
    目录引言安装例子高级特性引言 patchwork是基于ggplot2的拼图包,因为ggplot2本身没有强大的拼图语法,而一般使用的gridExtra与cowplot的拼ggplot...
    99+
    2024-04-02
  • 如何使用node实现一个图片拼接插件
    今天小编给大家分享一下如何使用node实现一个图片拼接插件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2024-04-02
  • 一文详解如何使用Python批量拼接图片
    目录前言〇、准备工作,PIL库安装使用pip安装一、简单程序实现二、更复杂情况总结前言 当需要将多张图像拼接成一张更大的图像时,通常会用到图片拼接技术。这种技术在许多领域中都有广泛的...
    99+
    2023-05-19
    python多图拼接 python拼接图片 python图片拼图
  • 使用微信小程序实现图片拼接功能
    标题:微信小程序实现图片拼接功能随着移动设备的普及和摄影爱好的兴起,人们对于图片处理的需求也越来越多。本文将介绍如何使用微信小程序来实现图片拼接功能,并提供具体的代码示例。一、技术准备在开始编写代码之前,我们需要准备以下技术:微信开发者工具...
    99+
    2023-11-21
    微信小程序 实现 图片拼接
  • 用python编写一个图片拼接工具
    目录前言代码展示效果展示总结前言 故事要从上面这张表情包开始讲起,看到这张表情包之后,我突发奇想,觉得可以将室友上班摸鱼的照片拼接起来,做成表情包叫他起床 激励他学习!!!于是我马...
    99+
    2024-04-02
  • 使用 Node.js 模拟滑动拼图验证码操作的示例代码
    近几年,网页上各种新型验证码层出不穷,其中一种比较常见的是滑动验证码,比如下图这种。 本文介绍了一种使用纯前端方法寻找滑动终点并模拟滑动的方法。 我们需要三个依赖库: puppeteer 、 Resemb...
    99+
    2022-06-04
    验证码 示例 拼图
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作