zoukankan      html  css  js  c++  java
  • 使用convert来批量处理图片

    convert 是 ImageMagick 工具包中的工具之一。

    ImageMagick 提供了丰富的基于命令行的图片处理能力,非常适合制作批量图片处理工具,比如,生成缩略图、批量格式转换等等。

    另外,针对常用的变成语言,ImageMagic 都拥有相应的接口库供使用。是各种图像处理开发中的优选方案。更多功能有待挖掘。

    图片缩放(采样并插值)

    这个是把图片批量进行 resize 的脚本。

    #!/bin/sh
    counter=1
    root=mypict
    resolution=400x300
    for i in `ls -1 $1/*.jpg`; do
        echo "Now working on $i"
        convert -resize $resolution $i ${root}_${counter}.jpg
        counter=`expr $counter + 1`
    done

    除了指定分辨率(会就近原则,保持原来画幅比例),还可以指定缩放倍数:

    $convert image.png -resize 50%  -resize 200% -quality 100 resize.png

    上面这条,先缩小为原来一半,然后放大一倍;虽然最后大小和原来一样,但是因为缩放过程中像素有丢失,画面明显模糊了。

    使用 -quality 开关,可以控制 resize 的质量;可以不指定,但是,总觉得默认的 resize 图片质量不高。

    图片抽样

    与resize的区别在于-sample只进行了等概率抽样,没有进行插值。一般生成缩略图用这个方法:

    $convert image.png -sample 50% sample.png  

    图片切割

    使用 convert 将图片切割成多张 40x40 的小图:

    convert 5.png -crop 40x40 test5.png

    从(0,20)位置开始,裁剪一张(320,200)的图出来:

    convert 1-2.png -crop 320x200+0+20 test.png

    从右下角(-10, -5)位置开始,裁剪一张 100x80 的图出来:

    convert src.jpg -gravity southeast -crop 100x80+10+5 dest.jpg

    在原图中心截取一张 100x80 的图出来:

    convert src.jpg -gravity center -crop 100x80+0+0 dest.jpg

    图片旋转

    图片旋转实际用的场合最多可能是90度和180度。下面这句可以实现 45 度旋转:

    $convert image.png -rotate 45 rotate.png 

    按上面方式旋转后,是把旋转的图片放到了一张更大的图当中,大图空余部分,是用白色填充的。如果我们先用其它颜色填充:

    $convert image.png -backround black -rotate 45 rotate.png  
    $convert image.png -background #000000 -rotate 45 rotate.png 
    $convert image.png -background rgba(0,0,0,0) -rotate 45 rotate.png  

    合成图片

    应用比较多的可能就是做水印了,暂时记录做水印的方法:

    $convert image.png -gravity center -compose over overlay.png -composite newimage.png  
    $convert image.png -gravity southeast -compose over overlay.png -composite newimage.png 

    添加文字

    恩,在图片上写一些字,别问我为什么需要:

    $convert image.png -draw "text 0,20 'some text'" newimage.png

    从文件里面读取,并指定大小、颜色、位置等:

    $convert source.jpg -font xxx.ttf -fill red -pointsize 48 -annotate +50+50 @text.txt result.jpg

    去掉图片边框

    $convert image.png -trim -fuzz 10% newimage.png

    改变背景色

  • 相关阅读:
    no-octal-escape (Rules) – Eslint 中文开发手册
    Object.isSealed (Object) – JavaScript 中文开发手册
    AngularJS SQL
    Eclipse 内容辅助
    ionic 单选框操作
    CSS border-top-color 属性
    Java 集合:(二十八) SortedMap 接口
    Java 集合:(二十七)Properties实现类
    Java 集合:(二十六) Hashtable 实现类
    Java 集合:(二十五)备用2
  • 原文地址:https://www.cnblogs.com/pied/p/4373903.html
Copyright © 2011-2022 走看看