yyyyyyyyyyyyyyyyyyyy

博客园 首页 新随笔 联系 订阅 管理
 

在认识ImageMagick之前,我***的图像浏览软件是KuickShow,截图软件是KSnapShot,这两款软件都是KDE附带的软件,用起来也是蛮方便的。在一次偶然的机会中,我遇到了ImageMagick,才发现Linux竟然有如此功能强大的图像软件。

你将会发现,大部分的操作,你只要在终端下动动键盘即可,省得你用鼠标点来点去。

下面,我对ImageMagick的主要功能做一个简单的介绍,其中覆盖的大都是人们常用的一些功能,如果你要全面的了解它的知识,你可以看看它的man手册。

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

格式转化
比如把 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 *.jpgdoconvert $i `basename $i .jpg`.gifdone
我们还可用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.jpg
convert会自动地考虑在缩放图像大小时图像的高宽的比例,也就是说着新的图像的高宽比与原图相同。 
我们还可以批量生成缩略图:

mogrify -sample 80x60 *.jpg
注意,这个命令会覆盖原来的图片,不过你可以在操作前,先把你的图片备份一下。 
加边框
在一张照片的四周加上边框,可以用 -mattecolor 参数,比如某位同志牺牲了,我们需要为他做一张黑边框的遗像,可以这样:

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

convert -border 60x60 -bordercolor "#000000" yourname.jpg rememberyou.png
在图片上加文字
convert -fill green -pointsize 40 -draw 'text 10,50 "charry.org"' foo.png bar.png
上面的命令在距离图片的左上角10x50的位置,用绿色的字写下charry.org,如果你要指定别的字体,可以用-font参数。 
模糊
高斯模糊:

convert -blur 80 foo.jpg foo.png
-blur参数还可以这样-blur 80x5。后面的那个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
执行后,你会看到,照片的四周会一个5x5的边,如果你要一个凹下去的边,把-raise改为+raise就可以了。其实凸边和凹边看起来区别并不是很大。 
其他
其他功能都是不太常用的,如果你感兴趣的话,可以看它的联机文档

import
import是一个用于屏幕截图的组件,下面列出的是我们常用的功能,其他的功能,你参考它的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秒钟内切换到需要截取的画面噢。 
display
display应该是我们***的最为频繁的图像处理软件了,毕竟,还是看的多

显示图片
display foo.png
如果你要显示多个文件,你可以***通配符
display *.png
幻灯片
display -delay 5 *
每隔5个百分之秒显示一张图片 
一些快捷键
space(空格): 显示下一张图片
backspace(回删键):显示上一张图片
h: 水平翻转
v: 垂直翻转
/:顺时针旋转90度
/:逆时针旋转90度
>: 放大
<: 缩小
F7:模糊图片
Alt+s:把图片中间的像素旋转
Ctrl+s:图象另存
Ctrl+d:删除图片
q: 退出
其他
ImageMagick还提供有丰富的编程接口,比如,你可以用PHP来调用它,用ImageMagick来生成验证码图片,效果非常棒。

ImageMagick还有一个小工具identify,它可以用来显示一个图片文件的详悉信息,比如格式、分辨率、大小、色深等等,你都可用它来帮你的忙。

如果你对命令行不太熟悉,你也可以在图片上单击,你会发现,通过鼠标你也可以完成图像的编辑。

ImageMagick的网站:www.imagemagick.org

 

  1. 如何让animate在显示图片的过程保持窗口的标题不变

    animate -title "My Image Sequence" images.
  2. import抓得的图片与X服务器上显示的不一致怎么办?
    import -descend image.miff
  3. 如何动画显示YUV 图片序列?
    animate -geometry 352x240 -scene 0-71 yuv3:frame%d
  4. 如果只看一个RGB图片的红色通道(red channel)?
    display -gamma 1.0,0.0,0.0 image.miff
  5. 如何改变PostScript默认纸张大小?
    要改变默认的612x792大小,修改magick/image.h中的PSPageGeometry的值并重编译.
  6. 如何自左至右无边无框无文字半三幅画连接在一起?
    convert +append image1.ppm image2.ppm image3.ppm side_by_side.miff
     # 或
    convert -size 350x500 xc:black composite.miff
    composite -geometry +0+0 composite.miff image1.gif composite.miff
    composite -geometry +100+0 composite.miff image2.gif composite.miff
    composite -geometry +0+300 composite.miff image3.gif composite.miff
    composite -geometry +0+375 composite.miff image4.gif composite.miff
  7. 如何生成gif动画?
    convert -delay 20 frame*.gif animation.gif
    convert -delay 20 frame1.gif -delay 10 frame2.gif -delay 5 frame3.gif animation.gif
    convert frame1.gif -page +50+100 frame2.gif -page +0+100 frame3.gif animation.gif
    convert -loop 50 frame*.gif animation.gif
    convert +adjoin images.* frames%d.gif
  8. 如果完整的显示PostScript图片?
    display -page letter image.ps
  9. 什么是图片目录?如何使用它们?
    #图片目录(visual image directory ,VID)的创建:
       montage *.jpg directory.vid
       convert 'vid:*.jpg' directory.vid
    #显示图片目录
       display directory.vid
       display vid:movie.mpg
  10. 如果带框架保存一个窗口?
    xwininfo -frame
    import -frame -window ID window.miff
  11. 图片以单一颜色(a solid color)显示,是怎么回事? 图片被破坏,或含有值为0的matte层,试着:
    display +matte image.miff
  12. 出现 "???? library is not available ..."是怎么回事? 没安装相关的函数库。参见安装说明。
  13. 如何查看图片不光滑层(matte channel)的值?
    convert image.tiff image.matte
    display -size 640x480 gray:image.matte
  14. 运行"Convert in.gif out.png" 时显示 "Invalid Parameter - out. 你运行的convert是windows的分区类型转换程序。
  15. 如何在图片增加斜角?
    #对图片边缘的处理共分四类。
     1)增加有色边
    convert -bordercolor red -border 25x25 image.jpg image.gif
     2)加亮或变暗图片边缘,以增强3D效果
    convert -raise 25 image.jpg image.gif
     3)在图片周围增加装饰性框架。
    convert -mattecolor gray -frame 25x25 image.jpg image.gif
     4)在图片边缘增加升、降斜角
    convert -mattecolor gray -frame 25x25+0+25 image.jpg image.gif
    convert -mattecolor gray -frame 25x25+25+0 image.jpg image.gif
  16. 用窗口管理器运行display失败了,怎么办? 用下列命令之一来确认display运行在一个交互环境中:
    display logo:Untitled
    display < /dev/console
  17. 将PostScript文件转换为其它格式时,如何改善文字的外观?
    convert -density 288 -geometry 25% image.ps image.gif
  18. 如何用2-3英寸高的文字注释一个图片? 先检查有无可缩放字体: xlsfonts -fn '*-0-0-0-0-*' 有则:
    convert -font '-*-helvetica-*-*-*--300-300-*-*-*-*-iso8859-1' /
            -fill green -draw 'text 50,300 Magick' image.gif annotated.gif
    # If you have the FreeType support built into ImageMagick,
    # just increase your pointsize and/or density:
    convert -font Helvetica -pointsize 100 -density 300 ...
  19. 如何将gif文件分析为一系列的单个图片?
    convert animation.gif frame%02d.gif
  20. 用NetScape显示的图片,如何去掉周围的背景色? convert +page alpha.gif beta.gif
  21. 如何用web安全的颜色(Web safe colors)创建GIF或PNG图片?
    convert -map netscape: alpha.gif beta.gif
  22. 为何Adobe Acrobat 2.1不能读ImageMagick's制作的PDF? 用 Acrobat 3.0或以上版本,来阅读这种经zip压缩的pdf,或制作PDF时不进行压缩。
    convert +compress images.tiff image.pdf
  23. 如何在图片上增加一个不光滑层(matte channel)?
    convert image.gif -matte temp.miff
    composite -compose CopyOpacity mask.xbm temp.miff transparent.gif
  24. 在NT环境下如何用convert在图片上写字?
    convert -font Arial -fill blue -draw "text 10,10 'your text here'" d:/test.tif png:d:/test.png
    convert.exe -pointsize 18 -draw "text 0,0 "This is my text!"" C:/blank.gif c:/text.gif
  25. 为何GIF文件比期望的大? 需要在编译源码时加 --enable-lzw 参数,来打开LZW压缩功能。
  26. 为何JPEG文件比期望的大? 可能嵌入Exif或IPTC等"profiles", 或者含有没压缩的thumbnails. 可以用命令行参数 +profile ""或相关的API来将它们去掉。
  27. 如何从图片文件中抽取第一张图片?
    convert "Image.gif[0]" first.gif
    
  28. 如何创建一张空白图片?
    convert -size 800x600 xc:"#ddddff" ltblue.ppm
    convert -size 800x600 null:white white.ppm
    convert in.png -threshold 100% black.ppm  #<--与in.png同大小
    
  29. 为何GIF文件比期望的大? 需要在编译源码时加 --enable-lzw 参数,来打开LZW压缩功能。
  30. 为何JPEG文件比期望的大? 可能嵌入Exif或IPTC等"profiles", 或者含有没压缩的thumbnails. 可以用命令行参数 +profile ""或相关的API来将它们去掉。

 

 

 

 

 

*****************************************************************

 

 字体变大
Image MagicK 是一个强大的图象处理工具包。它提供了几个非常方便的命令行命令: display, animate,import, montage,mogrify,identify等,可以进行图象的显示,缩放,旋转,调色,加框,加注释等,还能制作GIF动画,图象索引,能自动生成图象.
  1. 制作索引图和动画
    !/bin/bash
    montage -bordercolor red -borderwidth 3 -label "%f" -tile 5x3 *.JPG montage.jpg
    mogrify -format gif *.JPG
    display montage.jpg
    animate *.JPG
  2. 缩放 convert -sample 80x40 input.jpg output.jpg #注意:缩放后图像保持原来的长宽比例 convert -sample 25%x25% input.jpg output.jpg
  3. 为当前目录的所有图像生成缩略图
    for img in `ls *.jpg`
    do
    convert -sample 25%x25% $img thumb-$img
    done
  4. 获取文件信息 libtiff
    tiffinfo filename.tiff
    pnginfo filename.png
  5. 可以使用 ImageMagick 的 identify
     identify -verbose sample.png 
    identify -format "%wx%h" sample.png
  6. 旋转图像
     convert -rotate 90 input.jpg output.jpg
  7. 更改文件类型
     convert input.jpg output.png
  8. 为图像增加注释文字
    convert -font helvetica -fill white -pointsize 36 /
    -draw 'text 10,50 "Floriade 2002, Canberra, Australia"' /
    floriade.jpg comment.jpg
    convert -font fonts/1900805.ttf -fill white -pointsize 36 /
    -draw 'text 10,475 "stillhq.com"' /
    floriade.jpg stillhq.jpg
  9. 特殊效果
    convert -charcoal 2 input.jpg output.jpg #炭笔
    convert -colorize 255 input.jpg output.jpg #着色 可以指定三种颜色 red/green/blue
    convert -implode 4 input.jpg output.jpg #内爆效果
    convert -solarize 42 input.jpg output.jpg #曝光,模拟胶片曝光
    convert -spread 5 input.jpg output.jpg #随机移动,参数是位移大小
  10. 一次执行多个操作
     convert -sample 25%x25% -spread 4  -charcoal 4 input.jpg output.jpg 

ImageMagick FAQ 摘要

  1. 如何让animate在显示图片的过程保持窗口的标题不变
    animate -title "My Image Sequence" images.
  2. import抓得的图片与X服务器上显示的不一致怎么办?
    import -descend image.miff
  3. 如何动画显示YUV 图片序列?
    animate -geometry 352x240 -scene 0-71 yuv3:frame%d
  4. 如果只看一个RGB图片的红色通道(red channel)?
    display -gamma 1.0,0.0,0.0 image.miff
  5. 如何改变PostScript默认纸张大小?
    要改变默认的612x792大小,修改magick/image.h中的PSPageGeometry的值并重编译.
  6. 如何自左至右无边无框无文字半三幅画连接在一起?
    convert +append image1.ppm image2.ppm image3.ppm side_by_side.miff
    # 或
    convert -size 350x500 xc:black composite.miff
    composite -geometry +0+0 composite.miff image1.gif composite.miff
    composite -geometry +100+0 composite.miff image2.gif composite.miff
    composite -geometry +0+300 composite.miff image3.gif composite.miff
    composite -geometry +0+375 composite.miff image4.gif composite.miff
  7. 如何生成gif动画?
    convert -delay 20 frame*.gif animation.gif
    convert -delay 20 frame1.gif -delay 10 frame2.gif -delay 5 frame3.gif animation.gif
    convert frame1.gif -page +50+100 frame2.gif -page +0+100 frame3.gif animation.gif
    convert -loop 50 frame*.gif animation.gif
    convert +adjoin images.* frames%d.gif
  8. 如果完整的显示PostScript图片?
    display -page letter image.ps
  9. 什么是图片目录?如何使用它们?
    #图片目录(visual image directory ,VID)的创建:
    montage *.jpg directory.vid
    convert 'vid:*.jpg' directory.vid
    #显示图片目录
    display directory.vid
    display vid:movie.mpg
  10. 如果带框架保存一个窗口?
    xwininfo -frame
    import -frame -window ID window.miff
  11. 图片以单一颜色(a solid color)显示,是怎么回事? 图片被破坏,或含有值为0的matte层,试着:
     display +matte image.miff
  12. 出现 "???? library is not available ..."是怎么回事? 没安装相关的函数库。参见安装说明。
  13. 如何查看图片不光滑层(matte channel)的值?
    convert image.tiff image.matte
    display -size 640x480 gray:image.matte
  14. 运行"Convert in.gif out.png" 时显示 "Invalid Parameter - out. 你运行的convert是windows的分区类型转换程序。
  15. 如何在图片增加斜角?
    #对图片边缘的处理共分四类。
    1)增加有色边
    convert -bordercolor red -border 25x25 image.jpg image.gif
    2)加亮或变暗图片边缘,以增强3D效果
    convert -raise 25 image.jpg image.gif
    3)在图片周围增加装饰性框架。
    convert -mattecolor gray -frame 25x25 image.jpg image.gif
    4)在图片边缘增加升、降斜角
    convert -mattecolor gray -frame 25x25+0+25 image.jpg image.gif
    convert -mattecolor gray -frame 25x25+25+0 image.jpg image.gif
  16. 用窗口管理器运行display失败了,怎么办? 用下列命令之一来确认display运行在一个交互环境中:
    display logo:Untitled
    display < /dev/console
  17. 将PostScript文件转换为其它格式时,如何改善文字的外观?
    convert -density 288 -geometry 25% image.ps image.gif
  18. 如何用2-3英寸高的文字注释一个图片? 先检查有无可缩放字体: xlsfonts -fn '*-0-0-0-0-*' 有则:
    convert -font '-*-helvetica-*-*-*--300-300-*-*-*-*-iso8859-1' /
    -fill green -draw 'text 50,300 Magick' image.gif annotated.gif
    # If you have the FreeType support built into ImageMagick,
    # just increase your pointsize and/or density:
    convert -font Helvetica -pointsize 100 -density 300 ...
  19. 如何将gif文件分析为一系列的单个图片?
    convert animation.gif frame%02d.gif
  20. 用NetScape显示的图片,如何去掉周围的背景色? convert +page alpha.gif beta.gif
  21. 如何用web安全的颜色(Web safe colors)创建GIF或PNG图片?
    convert -map netscape: alpha.gif beta.gif
  22. 为何Adobe Acrobat 2.1不能读ImageMagick's制作的PDF? 用 Acrobat 3.0或以上版本,来阅读这种经zip压缩的pdf,或制作PDF时不进行压缩。
    convert +compress images.tiff image.pdf
  23. 如何在图片上增加一个不光滑层(matte channel)?
    convert image.gif -matte temp.miff
    composite -compose CopyOpacity mask.xbm temp.miff transparent.gif
  24. 在NT环境下如何用convert在图片上写字?
    convert -font Arial -fill blue -draw "text 10,10 'your text here'" d:/test.tif png:d:/test.png
    convert.exe -pointsize 18 -draw "text 0,0 "This is my text!"" C:/blank.gif c:/text.gif
  25. 为何GIF文件比期望的大? 需要在编译源码时加 --enable-lzw 参数,来打开LZW压缩功能。
  26. 为何JPEG文件比期望的大? 可能嵌入Exif或IPTC等"profiles", 或者含有没压缩的thumbnails. 可以用命令行参数 +profile ""或相关的API来将它们去掉。
  27. 如何从图片文件中抽取第一张图片?
    convert "Image.gif[0]" first.gif
  28. 如何创建一张空白图片?
    convert -size 800x600 xc:"#ddddff" ltblue.ppm
    convert -size 800x600 null:white white.ppm
    convert in.png -threshold 100% black.ppm #<--与in.png同大小
     
  29. 为何GIF文件比期望的大? 需要在编译源码时加 --enable-lzw 参数,来打开LZW压缩功能。
  30. 为何JPEG文件比期望的大? 可能嵌入Exif或IPTC等"profiles", 或者含有没压缩的thumbnails. 可以用命令行参数 +profile ""或相关的API来将它们去掉。

使用笔记

  1. 把matlab中画出的多幅图作成GIF动画
     for i in `ls *.jpg`; do convert -trim -resize 350x305 $i crop.$i; done
    convert -delay 10 -loop 3 crop.frame*.jpg string.gif
    rm crop.frame*.jpg
  2. 生成png格式的email地址
    convert -size 185x19 null:white email.png
    convert -font monospace -fill black -pointsize 16 -draw 'text 4,14 "youremail@yourdomain"' email.png email.png
    convert -font monospace -fill blue -pointsize 16 -draw 'text 3,13 "youremail@yourdomain"' email.png email.png
~~~~~~~~~~~~~~~~~~~~
convert -crop 300x300+0+0 -resize 200x200 -colors 100 +profile "*" 1.jpg 1.png

表示:把1.jpg先从左上角(0,0)为起点裁剪一块300x300的部分,然后把这部分缩小到200x200,然后把颜色缩减到100色,最后生成1.png。
+profile "*": 意味着在图片文件里不存储附加信息,以减小图片体积。
注意,-resize会试图保留原图的视觉比例,因此不一定生成的图片和你指定的尺寸一定匹配,比如,如果2.jpg大小是400x200,所以如果用命令:convert 2.jpg -resize 100x100 2.png,那么生成的图片2.png的实际大小是100x50。

常用的参数有:
-crop 宽x高+起点横坐标+起点纵坐标:裁剪图
-resize 宽x高!:改变尺寸,如果使用惊叹号,表示不保留视觉比例,强行改变尺寸匹配给定的宽和高;如果仅给定宽或者高,如“宽x”或“x高”形式的参数(“x高”与“宽x高”的效果是一样的),则以已知参数为基准按比例改变尺寸。
-colors 颜色数:设定图片采用的颜色数,如果是生成png或gif图片应指定这个参数
-quality 质量:设定jpeg图片输出质量,推荐采用80,此命令仅用于输出格式是jpg的情况,不应省略,省略的话默认质量是95,生成图片过大
+profile "*":图片中不存储附加信息,必须使用,否则生成图片过大
 
 
 
 
 
 
 
 

imagemagick convert的简单用法  

2008-05-31 20:53:22|  分类: 学习笔记|字号 订阅

几个简单的应用。

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"

还可以进行批量裁剪、淡化、抖动、炭化、加边框、圆角等等一系列操作,具体可参考: 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 100x20 input.jpg output.jpg

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

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

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
是用来画,这里是文字,下面的位置1010 是以图片左上角为原点坐标的


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

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

  1. convert -font helvetica -fill white -pointsize 36
    -draw ‘text 10,50 “Floriade 2002, Canberra, Australia”’
    floriade.jpg comment.jpg

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

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

  1. 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 命令链接起来。例如,也许我们希望制作某图像的缩略图,然后对它应用发散。在发散发生之后,我们将应用炭笔效果:

  1. 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个像素宽的红边!

convert

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

  • 格式转化

比如把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.jpg

convert会自动地考虑在缩放图像大小时图像的高宽的比例,也就是说着新的图像的高宽比与原图相同。

我们还可以批量生成缩略图:

mogrify -sample 80x60 *.jpg

注意,这个命令会覆盖原来的图片,不过你可以在操作前,先把你的图片备份一下。

  • 加边框

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

convert -mattecolor "#000000" -frame 60x60 yourname.jpg rememberyou.png

其中,"#000000"是边框的颜色,边框的大小为60x60

你也可以这样加边框:

convert -border 60x60 -bordercolor "#000000" yourname.jpg rememberyou.png

  • 在图片上加文字

convert -fill green -pointsize 40 -draw 'text 10,50 "charry.org"' foo.png bar.png

上面的命令在距离图片的左上角10x50的位置,用绿色的字写下charry.org,如果你要指定别的字体,可以用-font参数。

  • 模糊

高斯模糊:

convert -blur 80 foo.jpg foo.png

-blur参数还可以这样-blur 80x5。后面的那个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

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

  • 其他

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

import

import是一个用于屏幕截图的组件,下面列出的是我们常用的功能,其他的功能,你参考它的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秒钟内切换到需要截取的画面噢。

display

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

  • 显示图片

display foo.png

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

display *.png

  • 幻灯片

display -delay 5 *

每隔5个百分之秒显示一张图片

  • 一些快捷键

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

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

    3. h: 水平翻转

    4. v: 垂直翻转

    5. /:顺时针旋转90

    6. \:逆时针旋转90

    7. >: 放大

    8. <: 缩小

    9. F7:模糊图片

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

    11. Ctrl+s:图象另存

    12. Ctrl+d:删除图片

    13. q: 退出


 

 

pdfunite合并PDF文件

首先进入要合并的pdf的目录,然后下面这条命令是合并当前目录下全部pdf文件

pdfunite *.pdf all.pdf

当然也可以合并部分,或者按顺序合并

pdfunite 1.pdf 2.pdf 3.pdf 4.pdf all-1234.pdf

 



 

 

 

ImageMagick之图片裁剪详解

imagemagick 的 convert 命令通过 crop 参数,可以把一幅大图片分成若干块大小一样的图片,同时也可以在大图上截取一块图片来。命令格式为

convert 原始图片 -crop widthxheight+x+y 目标图片

其中 widthxheight 是目标图片的尺寸,+x+y 是原始图片的坐标,这两组值至少要出现一组,也可以同时存在。另外该命令也可使用 gravity来重新定义坐标系统。关于更多 gravity 的信息,请参考:ImageMagicK 之 gravity 参数详解。下面介绍几种常用的命令。

  • 把原始图片分割成多张小图 (可能是同样大小)
convert src.jpg -crop 100x100 dest.jpg 

假设src.jpg的大小是300x200,执行命令后将得到名为dest-0.jpg、dest-1.jpg...dest-5.jpg的6张大小为100x100的小图片。注意如果尺寸不是目标图片的整数倍,那么右边缘和下边缘的一部分图片就用实际尺寸

  • 在原始图片上剪裁一张指定尺寸的小图
convert src.jpg -crop 100x80+50+30 dest.jpg 

在原始图片的上,距离顶部30像素、距左侧50像素为起点的位置,分别向左向下截取一块大小为100x80的图片。如果x相对于坐标,宽度不够100,那就取实际值。

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

在原始图上截取中心部分一块100x80的图片

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

在原始图上截取右下角距离下边缘10个像素,右边缘5个像素一块100x80大小的图片



 

 

 


 

 Linux下分割、合并PDF(pdftk),用于Linux系统的6款最佳PDF页面裁剪工具

复制代码
Linux下分割、合并PDF(pdftk)
  
pdftk
http://www.pdflabs.com/docs/install-pdftk/

合并
pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

pdftk *.pdf cat output all.pdf

多个不同页面合并
pdftk A=1.pdf B=2.pdf C=pdf cat A1-2 B2-3 C3 output abc.pdf

旋转第一页
pdftk in.pdf cat 1E 2-end output out.pdf

加密(128位)
pdftk a.pdf output b.pdf owner_pw pass

加访问密码
pdftk a.pdf output b.pdf user_pw pass

解密
pdftk a.pdf input_pw pass output b.pdf

解压
pdftk a.pdf output b.pdf uncompress

压缩
pdftk a.pdf output b.pdf compress

修复
pdftk a.pdf output b.pdf

切割
pdftk a.pdf cat 1-end output b.pdf

分解成单页
pdftk a.pdf burst
复制代码

 

 

 

 

 

 

CENTOS服务器 6 和 7 有一些区别
CENTOS6

sudo yum install libgcj
sudo rpm -i pdftk-2.02-1.*.rpm

CENTOS7
由于CENTOS7的yum库中不再支持libgcj
找到了一个老外的
x86_64

yum localinstall https://www.linuxglobal.com/static/blog/pdftk-2.02-1.el7.x86_64.rpm

i686

yum localinstall https://www.linuxglobal.com/static/blog/pdftk-2.02-1.el7.i686.rpm

最后在项目中引入

composer require mikehaertl/php-pdftk







CentOS7安装PDFtk

第一步:安装依赖

yum install gcc gcc-c++ libXrandr gtk2 libXtst libart_lgpl

第二步:安装libgcj,由于用镜像找不到它只能手动下载 
http://download.csdn.net/detail/u010392801/9476245

rpm -ivh --nodeps libgcj-4.4.7-16.el6.x86_64.rpm
  • 1

第三部:安装PDFtk

wget https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-1.el6.x86_64.rpm
  • 1
yum install pdftk-2.02-1.el6.x86_64.rpm
  • 1

打开terminal输入

which pdftk
  • 1

就可以看到/usr/bin/pdftk证明已经安装成功了.

 






用于 Linux 系统的 6 款最佳 PDF 页面裁剪工具

PDF( Portable Document Format,即 “便携式文档格式” ) 是一个知名的,也可能是目前使用最广泛的文件格式,专门用于可靠地演示和共享文件,这种文件格式与软件、硬件以及操作系统等无关,即是独立于它们的。
它也已成为电子文档的事实标准,特别是在互联网上。由于这个原因,以及日益增加的电子信息共享,今天许多人都从 PDF 文档中获取有用的信息。
本文我们将列出用于 Linux 系统的 6 款最佳 PDF 页面裁剪工具。
1. Master PDF Editor
Master PDF Editor 是一个易于使用,方便,功能强大的多功能 PDF 编辑器,用于处理 PDF 文档。

 

它可以让你轻松地查看、创建和修改 PDF 文件,还可以将多个文件合并成一个文件,也可以将源文档拆分成多个文件 。
除了这些功能,Master PDF Editor 还可以帮助你注释,签名以及加密 PDF 文件等等。
Master PDF Editor 的功能
跨平台,可在 Linux,Windows 和 macOS 上运行
可创建 PDF 文档
允许修改文本和对象
支持在 PDF 文档中添加注释
支持创建和填写 PDF 表单
支持光学文本识别 (optical text recognition)
支持多页操作
支持书签和数字签名
使用虚拟 PDF 打印机

 

2. PDF Quench
PDF Quench 是一个图形化的 Python 程序,用于裁剪 PDF 文件中的页面。

 

它能让用户正确地旋转裁剪页面,将裁剪框确定到与 meda 框相同的位置,这有助于处理第二次裁剪的问题。
3. PDF Shuffler
PDF-Shuffler 是一个小而简单的免费 python-gtk 应用程序,它是 python-pyPdf 的图形包装器。
 

使用 PDF-Shuffler,你可以合并和拆分 PDF 文档,并使用交互和直观的图形用户界面来旋转、裁剪、重新排列页面。
4. Krop
Krop 是一个简单的免费图形界面 (GUI) 应用程序,用于裁剪 PDF 文件页面,这个工具采用 Python 编写,只在 Linux 系统上运行。
 

它依赖于 PyQT,python-poppler-qt4 和 pyPdf 或 PyPDF2 来提供其全部功能,该工具另一个主要的特点是它可自动将页面分割为多个子页面,以适应屏幕尺寸有限的设备,如电子阅读器。
5. Briss
Briss 是一个简单免费的跨平台应用程序,用于裁剪 PDF 文件,适用于 Linux,Windows 和 macOS 系统。
 

该工具的一个显著特点是有一个直观的图形用户界面,它允许你在视觉覆盖的页面上配置一个矩形,以及其他的属性来精确确定裁剪的区域。
6. PDFCrop
PDFCrop 是一个 PDF 页面裁剪应用程序,采用 Perl 编写,适用于 Linux 系统。使用的前提是系统已安装 ghostscript(用于查找 PDF 边界框的边框)和 PDFedit(用于裁剪和调整和页面的大小)。
它可以让你裁剪掉 PDF 页面的白色边距,并将其重新缩放以适应标准尺寸的纸张;所得到的页面在打印之后更具可读性,也更加醒目。
该工具主要对学术界有用,因为这可以使他们能够以吸引人的方式打印下载的期刊文章。PDFCrop 也被那些接收结构为信纸尺寸的 PDF 文档的人使用,但是需要在 A4 纸上打印页面。(反之亦然)
介绍到此为止,本文我们列出了 6 款用于 Linux 系统的最好的 PDF 页面裁剪工具以及它们的主要功能。还有文章中没有提到的工具?欢迎在评论中和我们分享~




posted on 2017-06-09 01:03  xxxxxxxx1x2xxxxxxx  阅读(1856)  评论(0编辑  收藏  举报