侧边栏壁纸
博主头像
孔子说JAVA博主等级

成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!

  • 累计撰写 285 篇文章
  • 累计创建 125 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

图片工具GraphicsMagick的下载安装配置使用

孔子说JAVA
2021-09-12 / 0 评论 / 0 点赞 / 208 阅读 / 12,427 字 / 正在检测是否收录...

1、概述

GraphicsMagick是一个短小精悍的图片处理工具和库集合。用来处理图像的读取、写入和操作,支持超过88中图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、PhotoCD、SVG和TIFF。GraphicsMagick 是从 ImageMagick 5.5.2分支出来的。

  • 对于Java开发者来说,常用的图片处理工具有3个,JDK自带的图片处理库,ImageMagick,GraphicsMagick。JDK自带的图片处理库,虽稳定简单,性能却比较差;ImageMagick是目前最流行的图片处理工具,它的功能非常丰富;GraphicsMagick的功能略逊于ImageMagick,但是它的效率更强悍,但大多数情况下,GM的功能已经足够使用了。

功能特色:

  • (1)使用OpenMP进行多线程图片处理,增强了通过扩展CPU提高处理能力。
  • (2)支持大图片的处理,并且已经做过GB级别的图像处理实验。
  • (3)能够动态的生成图片,特别适用于互联网的应用。

支持格式:

  • 超过88种图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。

支持平台:

  • Linux、Mac、Windows。

使用方式:

  • GaphicsMagick支持命令行的模式,同时也支持JAVA、C、C++、Perl、PHP、Tcl、 Ruby等的调用。

2、下载

2.1 进入官网地址

打开浏览器,输入官方地址http://www.graphicsmagick.org/,或百度搜索GraphicsMagick,点击官网链接进入(一般在搜索结果的第一条)。点击首页的Current Release后面的dowload release下载链接进入files页面。

  • 或者点击首页上方的Download进入下载页面,翻到页面最下方的Download Sites,点击SourceForge file download链接进入files页面。

第1种方式:

image-1649322766120

第2种方式:

image-1649322777285

2.2 进入版本列表页面

点击上一步骤的"dowload release"链接之后会进入到如下图所示的界面,我们点击"graphicsmagick"进入版本列表页面。

image-1649322791503

2.3 选择合适的版本,进入下载页面

在版本列表页面,点击自己需要的版本号进入下载页面,这里我选择的是1.3.35版本。

image-1649322805265

2.4 下载安装包

在版本下载页面可以看到有不同类型的安装包可供我们下载,这里我选择GraphicsMagick-1.3.35.tar.gz进行下载,你也可以根据你的需要下载你想要下载的安装包。

  • 下载列表上方的绿色按钮是windows版本的下载链接。

image-1649322826852

3、安装

在下载windows版本时,可以看到文件名中有Q16的字样,关于版本中的Q8,Q16的说明如下:

  • Q8表示: 8-bits per pixel quantum
  • Q16表示:16-bits per pixel quantum

现在数码相机照的相片,每一种颜色就是8位深,所以建议选Q8。而使用16-bit per pixel quantums在处理图片时比8-bit慢15%至50%,并须要更多的内存。

windows下载安装包后直接安装即可,linux安装步骤如下:

3.1 解压

linux安装包复制到自己指定的目录,执行解压缩命令。

tar -zxvf GraphicsMagick-1.3.35.tar.gz

3.2 编译安装

cd GraphicsMagick-1.3.35
bash ./configure --prefix=~/.local --enable-shared=true
make
make install

3.3 验证是否安装成功

  • widows下,打开dos窗口,输入gm version,输出如下提示说明安装成功。

image-1649322913250

  • linux下,输入gm version,输出如下提示说明安装成功。
[root@70-37-fw2 GraphicsMagick-1.3.35]# gm version
GraphicsMagick 1.3.35 2020-02-23 Q8 http://www.GraphicsMagick.org/
Copyright (C) 2002-2020 GraphicsMagick Group.
Additional copyrights and licenses apply to this software.
See http://www.GraphicsMagick.org/www/Copyright.html for details.

Feature Support:
  Native Thread Safe         yes
  Large Files (> 32 bit)     yes
  Large Memory (> 32 bit)    yes
  BZIP                       no
  DPS                        no
  FlashPix                   no
  FreeType                   yes
  Ghostscript (Library)      no
  JBIG                       no
  JPEG-2000                  no
  JPEG                       yes
  Little CMS                 no
  Loadable Modules           no
  Solaris mtmalloc           no
  Google perftools tcmalloc  no
  OpenMP                     yes (201107 "3.1")
  PNG                        yes
  TIFF                       yes
  TRIO                       no
  Solaris umem               no
  WebP                       no
  WMF                        no
  X11                        no
  XML                        no
  ZLIB                       yes

Host type: x86_64-pc-linux-gnu

Configured using the command:
  ./configure  '--enable-shared'

Final Build Parameters:
  CC       = gcc -std=gnu99
  CFLAGS   = -fopenmp -g -O2 -Wall -pthread
  CPPFLAGS = -I/usr/include/freetype2
  CXX      = g++
  CXXFLAGS = -pthread
  LDFLAGS  = 
  LIBS     = -ltiff -lfreetype -ljpeg -lpng15 -lz -lm -lpthread

3.4 设置环境变量

  • 使用vi或vim打开配置文件,vim /etc/profile 在最后添加如下配置
  • 安装yum命令,centos 系统输入命令:yum -y install vim* 。ubuntu 系统输入命令:sudo apt-get install vim-gtk
export GMAGICK_HOME=/home/local/GraphicsMagick-1.3.25
export PATH=$GMAGICK_HOME/bin:$PATH
LD_LIBRARY_PATH=$GMAGICK_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

生效配置,使用如下命令

source /etc/profile 

重启服务器,使用 gm convert -list formats 命令查看支持的图片转换格式,如下,可以看到支持JPEG,JPG,PNG,GIF等多种图片格式转换。

[root@70-37-fw2 GraphicsMagick-1.3.35]# gm convert -list formats
   Format L  Mode  Description
--------------------------------------------------------------------------------
      3FR S  r--  Hasselblad Photo RAW
     8BIM P  rw-  Photoshop resource format
 8BIMTEXT P  rw-  Photoshop resource text format
8BIMWTEXT P  rw-  Photoshop resource wide text format
     APP1 P  rw-  Raw application information
 APP1JPEG P  rw-  Raw JPEG binary data
      ART S  rw-  PFS: 1st Publisher
      ARW S  r--  Sony Alpha DSLR RAW
      AVS U  rw+  AVS X image
        B S  rw+  Raw blue samples
  BIGTIFF P  rw+  Tagged Image File Format (64-bit offsets)
      BMP P  rw-  Microsoft Windows bitmap image
     BMP2 P  -w-  Microsoft Windows bitmap image v2
     BMP3 P  -w-  Microsoft Windows bitmap image v3
      BRF S  -w-  BRF ASCII Braille format
        C S  rw+  Raw cyan samples
    CACHE U  ---  Magick Persistent Cache image format
     CALS S  rw-  Continuous Acquisition and Life-cycle Support Type 1 image
            Specified in MIL-R-28002 and MIL-PRF-28002
  CAPTION P  r--  Image caption
      CIN S  rw-  Cineon Image File
     CMYK S  rw+  Raw cyan, magenta, yellow, and black samples
    CMYKA S  rw+  Raw cyan, magenta, yellow, black, and opacity samples
      CR2 S  r--  Canon Photo RAW
      CRW S  r--  Canon Photo RAW
      CUR S  r--  Microsoft Cursor Icon
      CUT S  r--  DR Halo
      DCM S  r--  Digital Imaging and Communications in Medicine image
            See http://medical.nema.org/ for information on DICOM.
      DCR S  r--  Kodak Photo RAW
      DCX S  rw+  ZSoft IBM PC multi-page Paintbrush
      DNG S  r--  Adobe Digital Negative
      DPX P  rw-  SMPTE 268M-2003 (DPX 2.0)
            See http://www.smtpe.org/ for information on DPX.
     EPDF P  rw-  Encapsulated Portable Document Format
      EPI P  rw-  Adobe Encapsulated PostScript Interchange format
      EPS P  rw-  Adobe Encapsulated PostScript
     EPS2 P  -w-  Adobe Level II Encapsulated PostScript
     EPS3 P  -w+  Adobe Level III Encapsulated PostScript
     EPSF P  rw-  Adobe Encapsulated PostScript
     EPSI P  rw-  Adobe Encapsulated PostScript Interchange format
      EPT P  rw-  Adobe Encapsulated PostScript with MS-DOS TIFF preview
     EPT2 P  rw-  Adobe Level II Encapsulated PostScript with MS-DOS TIFF preview
     EPT3 P  rw-  Adobe Level III Encapsulated PostScript with MS-DOS TIFF preview
      ERF S  r--  Epson RAW Format
     EXIF P  rw-  Exif digital camera binary data
      FAX P  rw+  Group 3 FAX (Not TIFF Group3 FAX!)
     FITS S  rw-  Flexible Image Transport System
  FRACTAL S  r--  Plasma fractal image
        G S  rw+  Raw green samples
      GIF P  rw+  CompuServe graphics interchange format (version 89a)
    GIF87 P  rw-  CompuServe graphics interchange format (version 87a)
 GRADIENT P  r--  Gradual passing from one shade to another
     GRAY S  rw+  Raw gray samples
    GRAYA S  rw+  Raw gray samples + alpha
HISTOGRAM P  -w-  Histogram of the image
      HRZ S  r--  HRZ: Slow scan TV
     HTML S  -w-  Hypertext Markup Language and a client-side image map
      ICB S  rw+  Truevision Targa image
      ICC P  rw-  ICC Color Profile
      ICM P  rw-  ICC Color Profile
      ICO S  r--  Microsoft Icon
     ICON S  r--  Microsoft Icon
 IDENTITY P  r--  Hald CLUT identity image
    IMAGE P  r--  GraphicsMagick Embedded Image
     INFO S  -w+  Image descriptive information and statistics
     IPTC P  rw-  IPTC Newsphoto
 IPTCTEXT P  rw-  IPTC Newsphoto text format
IPTCWTEXT P  rw-  IPTC Newsphoto text format
   ISOBRL S  -w-  ISO/TR 11548-1 format
  ISOBRL6 S  -w-  ISO/TR 11548-1 format 6dot
      JNG S  rw-  JPEG Network Graphics (libpng 1.5.13, zlib 1.2.7)
            See http://www.libpng.org/pub/mng/ for information on JNG.
      JNX S  r--  JNX: Garmin tile storage format
     JPEG P  rw-  Joint Photographic Experts Group JFIF format (IJG JPEG 62)
      JPG P  rw-  Joint Photographic Experts Group JFIF format (IJG JPEG 62)
        K S  rw+  Raw black samples
      K25 S  r--  Kodak Photo RAW
      KDC S  r--  Kodak Photo RAW
    LABEL P  r--  Image label
        M S  rw+  Raw magenta samples
      M2V S  -w+  MPEG Video Stream
      MAC S  r--  Mac Paint
      MAP U  rw-  Colormap intensities and indices
      MAT S  rw+  MATLAB Level 4.0-7.0 image formats
    MATTE S  -w+  MATTE raw opacity format
      MEF S  r--  Mamiya Photo RAW
     MIFF P  rw+  Magick Image File Format (GraphicsMagick 1.3.35, Zlib 1.2.7)
      MNG S  rw+  Multiple-image Network Graphics (libpng 1.5.13, zlib 1.2.7)
            See http://www.libpng.org/pub/mng/ for information on MNG.
     MONO S  rw-  Bi-level bitmap in least-significant-byte first order
      MPC U  rw+  Magick Persistent Cache image format
     MPEG S  -w+  MPEG Video Stream
      MPG S  -w+  MPEG Video Stream
      MRW S  r--  Minolta Photo RAW
      MTV U  rw+  MTV Raytracing image format
      MVG S  rw-  Magick Vector Graphics
      NEF S  r--  Nikon Electronic Format
     NULL P  rw-  Constant image of uniform color
        O S  rw+  Raw opacity samples
      ORF S  r--  Olympus Photo RAW
      OTB S  rw-  On-the-air bitmap
       P7 S  rw+  Xv thumbnail format
      PAL S  rw-  16bit/pixel interleaved YUV
     PALM U  r--  Palm pixmap
      PAM P  rw+  Portable Arbitrary Map format
      PBM P  rw+  Portable bitmap format (black/white)
      PCD S  rw-  Photo CD
     PCDS S  rw-  Photo CD
      PCL S  -w+  Page Control Language
      PCT S  rw-  Apple Macintosh QuickDraw/PICT
      PCX S  rw-  ZSoft IBM PC Paintbrush
      PDB U  rw+  Palm Database ImageViewer Format
      PDF P  rw+  Portable Document Format
      PEF S  r--  Pentax Electronic File
      PFA P  r--  Postscript Type 1 font (ASCII) (FreeType 2.8.0)
      PFB P  r--  Postscript Type 1 font (binary) (FreeType 2.8.0)
      PGM P  rw+  Portable graymap format (gray scale)
    PICON S  rw-  Personal Icon
     PICT S  rw-  Apple Macintosh QuickDraw/PICT
      PIX S  r--  Alias/Wavefront RLE image format
   PLASMA S  r--  Plasma fractal image
      PNG P  rw-  Portable Network Graphics (libpng 1.5.13, zlib 1.2.7)
            See http://www.libpng.org/ for information on PNG..
    PNG00 P  rw-  PNG that inherits type and depth from original (libpng 1.5.13, zlib 1.2.7)
    PNG24 P  rw-  24-bit RGB PNG, opaque only (libpng 1.5.13, zlib 1.2.7)
    PNG32 P  rw-  32-bit RGBA PNG, semitransparency OK (libpng 1.5.13, zlib 1.2.7)
    PNG48 P  rw-  opaque or binary transparent 48-bit RGB (libpng 1.5.13, zlib 1.2.7)
    PNG64 P  rw-  opaque or transparent 64-bit RGBA (libpng 1.5.13, zlib 1.2.7)
     PNG8 P  rw-  8-bit indexed PNG, binary transparency only (libpng 1.5.13, zlib 1.2.7)
      PNM P  rw+  Portable anymap
      PPM P  rw+  Portable pixmap format (color)
  PREVIEW S  -w-  Show a preview an image enhancement, effect, or f/x
       PS P  rw+  Adobe PostScript
      PS2 P  -w+  Adobe Level II PostScript
      PS3 P  -w+  Adobe Level III PostScript
     PTIF S  rw+  Pyramid encoded TIFF
      PWP U  r--  Seattle Film Works
        R S  rw+  Raw red samples
      RAF S  r--  Fuji Photo RAW
      RAS S  rw+  SUN Rasterfile
      RGB S  rw+  Raw red, green, and blue samples
     RGBA S  rw+  Raw red, green, blue, and matte samples
      RLA U  r--  Alias/Wavefront image
      RLE U  r--  Utah Run length encoded image
      SCT U  r--  Scitex HandShake
      SFW U  r--  Seattle Film Works
      SGI S  rw-  Irix RGB image
    SHTML S  -w-  Hypertext Markup Language and a client-side image map
      SR2 S  r--  Sony Photo RAW
      SRF S  r--  Sony Photo RAW
  STEGANO S  r--  Steganographic image
      SUN S  rw+  SUN Rasterfile
      SVG S  ---  Scalable Vector Graphics
     SVGZ S  ---  Scalable Vector Graphics (ZIP compressed)
     TEXT S  rw+  ASCII Text
      TGA S  rw+  Truevision Targa image
     TIFF P  rw+  Tagged Image File Format (LIBTIFF, Version 4.0.3)
     TILE P  r--  Tile image with a texture
            Use the syntax "-size WIDTHxHEIGHT TILE:imagename" to tile the
            specified tile image over a canvas image of size WIDTHxHEIGHT.
      TIM S  r--  PSX TIM
    TOPOL S  r--  TOPOL X Image
      TTF P  r--  TrueType font (FreeType 2.8.0)
      TXT S  rw+  ASCII Text
     UBRL S  -w-  Unicode Text format
    UBRL6 S  -w-  Unicode Text format 6dot
      UIL U  -w-  X-Motif UIL table
     UYVY S  rw-  16bit/pixel interleaved YUV
      VDA S  rw+  Truevision Targa image
    VICAR S  rw-  VICAR rasterfile format
      VID S  rw+  Visual Image Directory
     VIFF S  rw+  Khoros Visualization image
      VST S  rw+  Truevision Targa image
     WBMP S  rw-  Wireless Bitmap (level 0) image
      WPG U  r--  Word Perfect Graphics
      X3F S  r--  Foveon X3 (Sigma/Polaroid) RAW
      XBM S  rw-  X Windows system bitmap (black/white)
       XC P  r--  Constant image uniform color
      XCF S  r--  GIMP image
      XMP P  rw-  Adobe XML metadata
      XPM S  rw-  X Windows system pixmap (color)
       XV S  rw+  Khoros Visualization image
        Y S  rw+  Raw yellow samples
      YUV S  rw-  CCIR 601 4:1:1 or 4:2:2 (8-bit only)

 Meaning of 'L': P=Primary, S=Stable, U=Unstable

可以使用如下命令裁剪图片

gm convert -resize 100x80^ -gravity Center -crop 100x80+0+0 sample.jpg thumb.jpg

命令说明:

  • gravity 表示中心坐标,可选值为 Center , NorthWest(左上), NorthEast(右上), SouthWest(左下), SouthEast(右下) ,由Center参数即由中心开始向两边裁剪,+指定x轴向y轴向的偏移量。
  • sample.jpg为要裁剪的图片且必须存在。
  • thumb.jpg/png为裁剪后生成的新图片,可以拷贝生成的文件到本地后查看,能正常显示,则说明所有安装均正常。

4、常用操作命令

ImageMagick、GraphicsMagick的命令概览,以下说明的是使用命令行的方式。

[ convert | identify | mogrify | composite | montage | compare | display | animate | import | conjure ]
  • convert:转换图像格式和大小,模糊,裁剪,驱除污点,抖动,临近,图片上画图片,加入新图片,生成缩略图等。
  • identify:描述一个或较多图像文件的格式和特性。
  • mogrify:按规定尺寸转换一个图像,模糊,裁剪,抖动等。Mogrify改写最初的图像文件然后写到一个不同的图像文件。
  • composite:根据一个图片或多个图片组合生成图片。
  • montage:创建一些分开的要素图像。在含有要素图像任意的装饰图片,如边框、结构、图片名称等。
  • compare:在算术上和视觉上评估不同的图片***其它的改造图片。
  • display:如果你拥有一个X server的系统,它可以按次序的显示图片
  • animate:利用X server显示动画图片
  • import:在X server或任何可见的窗口上输出图片文件。 你可以捕获单一窗口,整个的荧屏或任何荧屏的矩形部分。
  • conjure:解释执行 MSL (Magick Scripting Language) 写的脚本。

4.1 查看图片信息

# 显示图像文件详细信息
gm identify input.jpg

# 识别图片(高级),可以打印出很多信息
gm identify -verbose input.jpg

4.2 生成缩略图

# 原始图片是input.jpg,尺寸:160x120
# 等比缩图 (缺点:产生白边)
gm convert input.jpg -thumbnail 100x100 output.jpg
--生成的图片大小是:100x75

# 只缩小不放大
gm convert input.jpg -resize “500x500>” output_1.jpg
加了>,表示只有当图片的宽与高,大于给定的宽与高时,才进行“缩小”操作。
生成的图片大小是:160x120,未进行操作
如果不加>,会导致图片被等比放大。

# 非等比缩图,按给定的参数缩图(缺点:长宽比会变化)
gm convert input.jpg -thumbnail “100x100!” output_2.jpg
--生成的图片大小是:100x100

# 裁剪后保证等比缩图 (缺点:裁剪了图片的一部分)
gm convert input.jpg -thumbnail “100x100^” -gravity center -extent 100x100 output_3.jpg
-- 生成的图片大小是:100x100,还保证了比例。不过图片经过了裁剪,剪了图片左右两边才达到1:1

# 填充后保证等比缩图 (缺点:要填充颜色,和第一种方法基本一样)
gm convert input.jpg -thumbnail “100x100” -background gray -gravity center -extent 100x100 output_4.jpg
-- 生成的图片大小是:100x100,还保证了比例,同时没有对图片进行任何裁剪,缺失的部分按指定颜色进行填充。

# 裁剪、填充相结合 (缺点:最差的方法)
gm convert input.jpg -thumbnail "10000@ -background gray -gravity center -extent 100x100 output_5.jpg
-- 生成的图片大小是:100x100,这次保证了大小和比例,其中的10000就是100x100的乘积,同时在填充和裁剪之间做了一个平衡。

# 位深度32 转为24, IE6,7,8不支持显示“位深度32”的图片,但IE9、火狐、谷歌浏览器就可以显示。
使用GM,把“位深度32”的图片转换为“位深度24”的图片
输入图片zzz.jpg就是“位深度32”的图片,输出图片 zzz_out.jpg就是“位深度24”的图片
gm convert -resize 100x100 -colorspace RGB zzz.jpg zzz_out.jpg
-- 转完后,图片的颜色会有轻微变化。

4.3 添加水印

gm composite -geometry 100x100% -gravity SouthEast logo.png input.jpg output.jpg

4.4 更改当前目录下*.jpg的尺寸大小,并保存于目录.thumb里面

gm mogrify -output-directory .thumbs -resize 320x200 *.jpg

4.5 将三幅图像和并为一副图像

gm montage -mode concatenate -tile 3x1 image1.ppm image2.ppm image3.ppm concatenated.miff

4.6 显示图像

gm display ‘vid:*.jpg’

4.7 格式转换

gm convert a.bmp a.jpg
gm convert a.bmp a.pdf(转换为pdf)

4.8 调整图像dpi和大小

gm convert -density 288 -geometry 25% image.gif image.gif
(缩小为原先的1/4,并且dpi为288)

gm convert -resize 640x480 image.gif image.gif
(转换为640x480的图像)

4.9 在图像上添加文字

gm convert -font Arial -fill blue -pointsize 18 -draw “text 10,10 ‘your text here’” test.tif test.png

4.10 从gif文件中抽取第一帧

gm convert “Image.gif[0]” first.gif

4.11 建立gif图像

gm convert -delay 20 frame*.gif animation.gif
gm convert -loop 50 frame*.gif animation.gif
(让动画循环50次)

gm convert -delay 20 frame1.gif -delay 10 frame2.gif -delay 5 frame3.gif animation.gif
(对每一帧手动指定延时)

4.12 截屏

gm import a.jpg
# 用鼠标点击所要截取的窗口,或者选择截屏区域,保存为a.jpg

gm import -frame a.jpg
# 保留窗口的边框

5、获取不到“gm”执行文件

执行命令或代码时,提示cannot run program “gm”: error=2, No such file or directory这样的错误时,有两种解决方案:

5.1 代码中设置gm路径

ConvertCmd convert = new ConvertCmd(true);
convert.setSearchPath("/home/local/GraphicsMagick-1.3.25/bin");

5.2 将gm拷贝到/usr/bin目录下(推荐做法)

cp /home/local/GraphicsMagick-1.3.25/bin/gm /usr/bin/
0

评论区