zoukankan      html  css  js  c++  java
  • nodejs图片处理工具gm用法

    在做H5应用中,有时候会涉及到一些图片加工处理的操作,nodejs有一个很好的后台图片处理module,就是这里说的gm。gm有官方文档,但感觉写得太抽象,反而看不懂了。这里把一些常见的用法写下,供大家参考。

    安装
    首先要安装 GraphicsMagick或者ImageMagick,然后

    npm install --save gm
    1
    用法说明
    图片尺寸

    gm('img.png')
    .size(function (err, size) {
    if (!err)
    console.log(size.width > size.height ? 'wider' : 'taller than you');
    });

    图片伸缩
    可以只依据宽、高或者同时将宽高都放缩。

    gm("img.png").resize(width)//保持宽高比
    gm("img.png").resize(null, height)//保持宽高比
    gm("img.png").resize(width, height, '!')//参数'!'用于忽略宽高比


    图片旋转
    将图片旋转degrees,背景填充color。

    gm("img.png").rotate(color, degrees)
    gm("img.png").rotate('green', 45)


    图片裁剪
    从图片的(x, y)位置开始,裁剪出一个宽为width,高为height的图片来。

    gm("img.png").crop(width, height, x, y)

    图片拼接(mosaic)

    gm()
    .in('-page', '+0+0')
    .in('bg.jpg')
    .in('-page', '+10+20') // location of smallIcon.jpg is x,y -> 10, 20
    .in('smallIcon.jpg')
    .mosaic()
    .write('tesOutput.jpg', function (err) {
    if (err) console.log(err);
    });

    图片合成(compose)

    gm()
    .command("composite") 
    .in("-gravity", "center")
    .in(change_image_url)
    .in(base_image_url)
    .write( output_file, function (err) {
    if (!err) 
    console.log(' hooray! ');
    else
    console.log(err);
    });

    不太清楚图片拼接(mosaic)与合成(compose)有什么区别,gm提供了两条命令,对于简单的图片合成,好像都可以使用。

    图片拼接(append)
    gm中使用append也可以实现图片的拼接,与mosaic、compose不同的是,这里的拼接应该是不能覆盖的。缺省参数ltr表示拼接方向,布尔变量,true表示从左到右,false表示从上到下,默认false。

    gm("img.png").append(img [, img, ltr])
    gm("img.png").append("another.jpg", "third.gif")//从上到下拼接
    gm("img.png").append("another.jpg", "third.gif", true)//从左到右拼接

    图片注释
    在图片的(x, y)位置绘制文字。

    gm("img.png").drawText(10, 50, "from scratch")


    创建图片

    gm(200, 400, "#ddff99f3")
    .drawText(10, 50, "from scratch")
    .write("/path/to/brandNewImg.jpg", function (err) {
    // ...
    });

    总结
    gm具有强大的图片处理功能,nodejs还是借助于gm工具来实现的图片处理,对于需要后台处理图片的情形,这个是挺有用的。

    gm提供的各个函数其实可以复合使用,就是说,先读取(gm)图片后,可以先进行拼接(mosaic, compose, append),然后裁剪(crop),放缩(resize)到指定大小后,最后才保存(write)下来。

    gm的官方文档感觉过于简陋,网上的关于nodejs gm用法的资料也不多,本文将一些基本的用法总结下来,学到到新的持续更新。

    另外,欢迎大家总结nodejs gm资料!

    http://aheckmann.github.io/gm/docs.html

    http://www.graphicsmagick.org/GraphicsMagick.html

  • 相关阅读:
    chrome浏览器中安装以及使用Elasticsearch head 插件
    windows10 升级并安装配置 jmeter5.3
    linux下部署Elasticsearch6.8.1版本的集群
    【Rollo的Python之路】Python 爬虫系统学习 (八) logging模块的使用
    【Rollo的Python之路】Python 爬虫系统学习 (七) Scrapy初识
    【Rollo的Python之路】Python 爬虫系统学习 (六) Selenium 模拟登录
    【Rollo的Python之路】Python 爬虫系统学习 (五) Selenium
    【Rollo的Python之路】Python 爬虫系统学习 (四) XPath学习
    【Rollo的Python之路】Python 爬虫系统学习 (三)
    【Rollo的Python之路】Python sys argv[] 函数用法笔记
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/10668629.html
Copyright © 2011-2022 走看看