使用IMAGEMAGICK的CONVERT工具批量转换图片格式

http://www.qiansw.com/linux-imagemagick-convert-img.html

Home > 文章 > 正文

LINUX命令行下使用IMAGEMAGICK的CONVERT工具批量转换图片格式

 枫叶  2016-03-09  文章  3,718 次浏览  暂无评论
 

ImageMagick是一个很强大的图片处理工具。
它提供了一个convert工具,可以在命令行下将图片格式进行转换。
我们可以配合shell进行批量转换文件格式。

举例:将menu目录下的所有png文件变更为jpg文件。

安装

使用yum即可安装。

 
1
yum install ImageMagick
变更前
 
1
2
3
4
5
6
7
8
9
10
11
12
[root@web menu]# tree
.
├── sm1b561jbbgh.png
├── sm1p4x55am8x.png
├── sm1txq3jzqpd.png
├── sm1xov7dy5ou.png
├── sm1y6af5i685.png
├── smfo7aqhsk3t.png
├── smt9oezo59m2.png
└── smvymyr3wnlj.png
 
0 directories, 8 files
转换格式
 
1
2
3
for file in *.png
    do convert $file ${file%%.*}.jpg
done

也可以直接写到一行

 
1
for file in *.png; do convert $file ${file%%.*}.jpg; done
转换完成
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@web menu]# tree
.
├── sm1b561jbbgh.jpg
├── sm1b561jbbgh.png
├── sm1p4x55am8x.jpg
├── sm1p4x55am8x.png
├── sm1txq3jzqpd.jpg
├── sm1txq3jzqpd.png
├── sm1xov7dy5ou.jpg
├── sm1xov7dy5ou.png
├── sm1y6af5i685.jpg
├── sm1y6af5i685.png
├── smfo7aqhsk3t.jpg
├── smfo7aqhsk3t.png
├── smt9oezo59m2.jpg
├── smt9oezo59m2.png
├── smvymyr3wnlj.jpg
└── smvymyr3wnlj.png
 
0 directories, 16 files
验证文件格式
 
 
 
 
 

Shell

 
 
 
 
1
2
3
[root@web menu]# file sm1b561jbbgh.*
sm1b561jbbgh.jpg: JPEG image data, JFIF standard 1.01
sm1b561jbbgh.png: PNG image data, 67 x 57, 8-bit/color RGB, non-interlaced

还有几个简单的应用。

1、批量图像格式转换

如果想将某目录下的所有jpg文件转换为png文件,只要在命令行模式下输入:

for %f in (*.jpg) do convert “%f” “%~nf.png”

2、对所有图像进行同一操作

譬如,批量生成某目录下所有PNG图像文件的缩略图(大小为80×40):

for %f in (*.png) do convert “%f” -sample 80×40 “%~nf_sample.png”

类似的,将某目录下所有PNG图像旋转90度的操作为:

for %f in (*.png) do convert “%f” -rotate 90 “%~nf_rotate.png”

还可以进行批量裁剪、淡化、抖动、炭化、加边框、圆角等等一系列操作,具体可参考: linux/l-graf/index.html">http://www.ibm.com/developerworks/cn/linux/l-graf/index.html

http://linux.chinaunix.net/docs/2006-12-15/3481.shtml

3、在图像上加上文字说明

如果你有大量图片需要发布,在所有图片上加上版权说明是很明智的做法。用ImgeMagick可以很容易的实现:

convert 1.png -fill white -pointsize 13 -draw “text 10,15 ‘lifesinger 2006'” 2.png

可以用-font指定字体,这时需要安装Ghostscript支持: http://www.cs.wisc.edu/~ghost/

还可以用composite命令在所有图片上加上水印,有兴趣的看这里:

http://www.imagemagick.org/script/composite.php

—————————————————————————————————————————–

convert

转换图像格式和大小,模糊,裁剪,驱除污点,抖动,临近,图片上画图片,加入新图片,生成缩略图等。

identify

描述一个或较多图像文件的格式和特性。

mogrify

按规定尺寸制作一个图像,模糊,裁剪,抖动等。Mogrify改写最初的图像文件然后写到一个不同的图像文件。

composite

根据一个图片或多个图片组合生成图片。

montage

创建一些分开的要素图像。在含有要素图像任意的装饰图片,如边框、结构、图片名称等。

compare

在算术上和视觉上评估不同的图片及其它的改造图片。

display

如果你拥有一个X server的系统,它可以按次序的显示图片

animate

利用X server显示动画图片

import

在X server或任何可见的窗口上输出图片文件。 你可以捕获单一窗口,整个的荧屏或任何荧屏的矩形部分。

conjure

解释执行 MSL (Magick Scripting Language) 写的脚本。

convert -sample 100×20 input.jpg output.jpg

上述命令生成一个100×20的缩略图

更好的方法是用等比例缩放,像这样,统一生成1/4的缩略图

convert -sample 25%x25% input.jpg output.jpg

如果写成脚本,就是像这个样子

for img in `ls *.jpg`

do

convert -sample 25%x25% ${img} thm${img}

done

加注图片

convert -font fonts/font.ttf -stroke color -fill color -pointsize size

-draw ‘text 10,10 “String”‘ input.jpg output.jpg

-font 指定字体,因为这样我加注文字,

-stroke 描边用的颜色,

-fill 填充用的颜色,这里用none就可以画出空心字了,

-pointsize 加注字体大小,像素数,

-draw 是用来画,这里是文字,下面的位置10,10 是以图片左上角为原点坐标的

向图像添加文本注释

有时您需要向图像添加文本注释。例如,假设您的公司拥有标准的名片图像,并希望在将名片发送到打印机之前将每个雇员的详细信息都添加到名片上面。另一个示例是为通过您网站上的在线课程的用户生成表示证书(presentation certificate)。

您可以使用下列命令行,为该图注释一些标识信息:

convert -font helvetica -fill white -pointsize 36

-draw ‘text 10,50 “Floriade 2002, Canberra, Australia”’

floriade.jpg comment.jpg

迄今为止,这是我在本文中所展示的最复杂的 convert 命令行了,因此我将花些时间来解释它。

-font helvetica 将注释的字体设置为 Helvetica。也可以在此处指定字体文件的路径。这个示例给图像添加了标记,这样未经许可其它网站就不能再使用该图像了,但它是使用位于非标准位置的字体来完成该任务的:

convert -font fonts/1900805.ttf -fill white -pointsize 36

-draw ‘text 10,475 “stillhq.com”’

floriade.jpg stillhq.jpg

-fill white 用白色而不是标准的黑色来填充字母。

-pointsize 36 以点为单位指定字母的大小。一英寸等于 72 点。

-draw ‘text 10,50 “…”’ 是一组绘图命令,在本例中是移动到位置 10, 50,然后绘制出双引号中的文本。使用单引号是因为如果需要绘制多个字,则绘图命令中需要使用双引号,而您不能在双引号中再用双引号。

在一次 ImageMagick 调用中执行多条命令

您已经看到了将命令与注释示例联系起来的示例。但是,可以将本文中提到的任意 ImageMagick 命令链接起来。例如,也许我们希望制作某图像的缩略图,然后对它应用发散。在发散发生之后,我们将应用炭笔效果:

convert -sample 25%x25% -spread 4

-charcoal 4 input.jpg output.jpg

用convert给图片加边框

convert -raise 5×5 input.jpg output.jpg

convert +raise 5×5 input.jpg output.jpg

以上命令分别用-,+边缘颜色的来达到处理边缘的效果!

convert -bordercolor red -border 5×5 input.jpg output.jpg

简单的加上5个像素宽的红边!

convertconvert顾名思义就是对图像进行转化,它主要用来对图像进行格式的转化,同时还可以做缩放、剪切、模糊、反转等操作。

格式转化比如把 foo.jpg 转化为 foo.png:

convert foo.jpg foo.png如果要想把目录下所有的jpg文件都转化为gif,我们可借助于shell的强大功能:

find ./ -name "*.jpg" -exec convert {} {}.gif \;转化后的gif名称为 *.jpg.gif ,这样看起来不太自然,没关系,我们可以再来一步:

rename .jpg.gif .gif *.jpg.gif本来,我想在find的时候,用basename来取得不带后缀的文件名的,这样就不会形成.jpg.gif这种丑陋的名子了,可是不知道为什么,就是不行,如果你知道的话,告诉我或者,你也可用shell script来完成上述的操作:

for i in *.jpg

do

convert $i `basename $i .jpg`.gif

done我们还可用mogrify来完成同样的效果:

mogrify -format png *.jpg上面命令将会把目录下面所有的jpg文件转化为png格式。convert还可以把多张照片转化成pdf格式:

convert *.jpg foo.pdf大小缩放比如我们要为一个普通大小的图片做一个缩略图,我们可以这样

convert -resize 100x100 foo.jpg thumbnail.jpg你也可以用百分比,这样显的更为直观:

convert -resize 50%x50% foo.jpg thumbnail.jpgconvert会自动地考虑在缩放图像大小时图像的高宽的比例,也就是说着新的图像的高宽比与原图相同。我们还可以批量生成缩略图:

mogrify -sample 80x60 *.jpg注意,这个命令会覆盖原来的图片,不过你可以在操作前,先把你的图片备份一下。

加边框在一张照片的四周加上边框,可以用 -mattecolor 参数,比如某位同志牺牲了,我们需要为他做一张黑边框的遗像,可以这样:

convert -mattecolor "#000000" -frame 60x60 yourname.jpg rememberyou.png其中,”#000000″是边框的颜色,边框的大小为60×60你也可以这样加边框:

convert -border 60x60 -bordercolor "#000000" yourname.jpg rememberyou.png在图片上加文字

convert -fill green -pointsize 40 -draw 'text 10,50 "charry.org"' foo.png bar.png上面的命令在距离图片的左上角10×50的位置,用绿色的字写下charry.org,如果你要指定别的字体,可以用-font参数。

模糊高斯模糊:

convert -blur 80 foo.jpg foo.png-blur参数还可以这样-blur 80×5。后面的那个5表示的是Sigma的值,这个是图像术语,我也不太清楚,总之,它的值对模糊的效果起关键的作用。

翻转上下翻转:

convert -flip foo.png bar.png左右翻转:

convert -flop foo.png bar.png反色形成底片的样子:

convert -negate foo.png bar.png单色把图片变为黑白颜色:

convert -monochrome foo.png bar.png加噪声

convert -noise 3 foo.png bar.png油画效果我们可用这个功能,把一张普通的图片,变成一张油画,效果非常的逼真

convert -paint 4 foo.png bar.png旋转把一张图片,旋转一定的角度:

convert -rotate 30 foo.png bar.png上面的30,表示向右旋转30度,如果要向左旋转,度数就是负数。

炭笔效果

convert -charcoal 2 foo.png bar.png形成炭笔或者说是铅笔画的效果。

散射毛玻璃效果:

convert -spread 30 foo.png bar.png漩涡以图片的中心作为参照,把图片扭转,形成漩涡的效果:

convert -swirl 67 foo.png bar.png凸起效果用-raise来创建凸边:

convert -raise 5x5 foo.png bar.png执行后,你会看到,照片的四周会一个5×5的边,如果你要一个凹下去的边,把-raise改为+raise就可以了。其实凸边和凹边看起来区别并不是很大。

其他其他功能都是不太常用的,如果你感兴趣的话,可以看它的联机文档

importimport是一个用于屏幕截图的组件,下面列出的是我们常用的功能,其他的功能,你参考它的man好了。

截取屏幕的任一矩形区域

import foo.png在输入上述的命令后,你的鼠标会变成一个十字,这个时候,你只要在想要截取的地方划一个矩形就可以了

截取程序的窗口

import -pause 3 -frame foo.png回车后,用鼠标在你想截的窗口上点一下即可。参数-frame的作用是告诉import,截图的时候把目标窗口的外框架带上,参数-pause的作用很重 要,你可以试着把它去掉,对比一下,你会发现,目标窗口的标题栏是灰色的,pause就是让import稍微延迟一下,等你的目标窗口获得焦点了,才开始 截图,这样的图才比较自然。

截取一个倾斜的窗口如果想让你的截图比较cool,你可以把截取一个倾斜的窗口,方法如下:

import -rotate 30 -pause 3 -frame foo.png截取整个屏幕

import -pause 3 -window root screen.png注意,暂停了3秒钟,你需要在3秒钟内切换到需要截取的画面噢。

displaydisplay应该是我们使用的最为频繁的图像处理软件了,毕竟,还是看的多

显示图片

display foo.png如果你要显示多个文件,你可以使用通配符

display *.png幻灯片

display -delay 5 *每隔5个百分之秒显示一张图片

一些快捷键

space(空格): 显示下一张图片

backspace(回删键):显示上一张图片

h: 水平翻转

v: 垂直翻转

/:顺时针旋转90度

\:逆时针旋转90度

>: 放大

<: 缩小

F7:模糊图片

Alt+s:把图片中间的像素旋转

Ctrl+s:图象另存

Ctrl+d:删除图片

q: 退出

使用IMAGEMAGICK的CONVERT工具批量转换图片格式的更多相关文章

  1. java批量转换图片格式

    废话不多直接上代码,代码其实也不多.... package com.qiao.testImage; import java.awt.image.BufferedImage; import java.i ...

  2. 使用Calibre自带工具批量转换电子书格式

    原来使用Calibre转换电子书格式都是先导入,再转换,再把转换后的文件复制出来,最后再改名. 虽然可以批量导入和转换,但复制和改名要一个处理.后来发现Calibre自带命令行转换工具,就写了一个批处 ...

  3. 【最简单】不用ps也可以批量转换图片格式

    不废话直接开始~ 1.新建文件夹,把需要转换的图片放进去,如图: 2.文件夹里建一txt文本,重点来了!txt文本的内容,如果是jpg转为png,则输入“ren *.jpg *.png”,同理png转 ...

  4. 使用VBA批量转换Excel格式,由.xls转换成.xlsx

    问题分析: Excel2007以前的格式是.xls,之后的格式是.xlsx.打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式.但是面对几百个Excel表这样就太累了,搜索很久,也 ...

  5. Python 批量修改图片格式和尺寸

    公司的一个项目要求把所有4096x4096的图片全部转化成2048x2048的图片,这种批量转换图片大小的软件网上很多,我的同事原来使用的美图看看的批量转换,但是稍微有点麻烦,每次还需要指定要转换的图 ...

  6. Mac电脑如何转换图片格式?ImageWell for Mac转换图片格式教程

    想用Mac电脑转换图片格式?我想你可以借助ImageWell for Mac软件!ImageWell是一款简单好用的的图像处理工具,具有显示,编辑,处理,保存等功能.下面小编来为大家演示在Mac电脑上 ...

  7. Python批量修改图片格式和尺寸

    Python批量修改图片格式和尺寸 备注: 1.导入了PIL库,是处理图片用的,很强大; 2.导入了的win32库,是判断隐藏文件用的,我们的项目需要删除隐藏文件,不需要的可以直接找到删除. 3.导入 ...

  8. ubuntu 转换图片格式的方法(sam2p, imagemagick)

    (1) 终端:sudo apt-get install sam2p sam2p [原图片名.格式] [目标图片名.格式] 即可在同一目录下生成目标图片格式 (2) 终端: sudo apt-get i ...

  9. convert图像格式批量转换

    问题:利用GMT绘制生成了eps格式的图像,为了将图像插入到word中,且保持较高的分辨率,利用convert进行图像格式转换,将eps转换成tiff格式. code:  $i ${name}.tif ...

随机推荐

  1. linux下ssh/sftp配置和权限设置

    基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录). 1.开通 sftp 帐号,使用户只能 sftp 操作文件, 而不能 ssh ...

  2. CF1042C Array Product(贪心,模拟)

    题目描述 You are given an array aa consisting of nn integers. You can perform the following operations w ...

  3. POJ 1180 Batch Scheduling (dp,双端队列)

    #include <iostream> using namespace std; + ; int S, N; int T[MAX_N], F[MAX_N]; int sum_F[MAX_N ...

  4. POJ2823 滑动窗口

    滑动最小(最大)值,模版题. 题意:给一个数列,给一个窗口大小k,顺序求每个窗口中最大值和最小值. 和挑战中的例题一模一样,就多了一个求最大,改个大于小于符号就行. 算法是利用双端队列: 以求最小值为 ...

  5. spring配置多个视图解析

    <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceVie ...

  6. CentOS7 安装 Docker,10分钟入门!

    本次安装是在VM虚拟机的CentOS 7环境下,仅为了学习和测试的简单安装,如果在真实生产环境还需要考虑安全策略的其他问题. 1.Linux内核版本需要 3.10.0 以上并且是64位 [root@l ...

  7. BootStrap的动态模态框及静态模态框

    1.要用bootStrap这个框架就必须要重载它的class类,也就是说class要一样 代码如下: 有疑问的可以在下面留言,欢迎大家一起交流 1.1动态模态框 <!DOCTYPE html&g ...

  8. 课时102.CSS精灵图(掌握)

    我们这节课来介绍一个和背景图片相关的东西,精灵图 1.设么是css精灵图? css精灵图是一种图像合成技术 2.css精灵图作用 可以减少请求的次数,以及可以降低服务器处理压力 3.如何使用css精灵 ...

  9. Hive初识(一)

    LOAD DATA语句 一般来说,在SQL创建表后,我们就可以使用INSERT语句插入数据.但在Hive中,可以使用LOAD DATA语句来插入数据. LOAD DATA [LOCAL] INPATH ...

  10. hive的load命令

    Hive Load语句不会在加载数据的时候做任何转换工作,而是纯粹的把数据文件复制/移动到Hive表对应的地址. 语法 LOAD DATA [LOCAL] INPATH 'filepath' [OVE ...