• GraphicsMagick 号称图像处理领域的瑞士军刀


     

    标签: librarydelegatesimage图像处理fontstiff
     分类:
     
    简介 
            GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88中图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。 
            通过使用OpenMP可是利用多线程进行图片处理,增强了通过扩展CPU提高处理能力。GraphicsMagick可以再绝大多数的平台上使用,Linux、Mac、Windows都没有问题。 

            GraphicsMagick支持大图片的处理,并且已经做过GB级别的图像处理实验。GraphicsMagick能够动态的生成图片,特别适用于互联网的应用。可以用来处理调整尺寸、旋转、加亮、颜色调整、增加特效等方面。GaphicsMagick不仅支持命令行的模式,同时也支持C、C++、Perl、PHP、Tcl、Ruby等的调用。事实上,GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,下面就是两个之间的一些比较。 

    安装 
    • tar -xvf GraphicsMagick-1.3.12.tar
    • ./configure --without-prel --enable-shared --disable-openmp
    • make
    • make install

    示例:GraphicsMagick+im4java压缩图片 
    Java代码 复制代码 收藏代码
    1. /**  
    2.      * 先缩放,后居中切割图片  
    3.      * @param srcPath 源图路径  
    4.      * @param desPath 目标图保存路径  
    5.      * @param rectw 待切割在宽度  
    6.      * @param recth 待切割在高度  
    7.      * @throws IM4JavaException   
    8.      * @throws InterruptedException   
    9.      * @throws IOException   
    10.      */  
    11. public static void cropImageCenter(String srcPath, String desPath, int rectw, int recth) throws IOException, InterruptedException, IM4JavaException{   
    12.     IMOperation op = new IMOperation();   
    13.            
    14.     op.addImage();   
    15.     op.resize(rectw, recth, '^').gravity("center").extent(rectw, recth);   
    16.     op.addImage();   
    17.   
    18.     ConvertCmd convert = new ConvertCmd(true);   
    19.     convert.run(op, srcPath, desPath);   
    20. }  
    [java] view plain copy
     
     print?
    1. /** 
    2.      * 先缩放,后居中切割图片 
    3.      * @param srcPath 源图路径 
    4.      * @param desPath 目标图保存路径 
    5.      * @param rectw 待切割在宽度 
    6.      * @param recth 待切割在高度 
    7.      * @throws IM4JavaException  
    8.      * @throws InterruptedException  
    9.      * @throws IOException  
    10.      */  
    11. public static void cropImageCenter(String srcPath, String desPath, int rectw, int recth) throws IOException, InterruptedException, IM4JavaException{  
    12.     IMOperation op = new IMOperation();  
    13.           
    14.     op.addImage();  
    15.     op.resize(rectw, recth, '^').gravity("center").extent(rectw, recth);  
    16.     op.addImage();  
    17.   
    18.     ConvertCmd convert = new ConvertCmd(true);  
    19.     convert.run(op, srcPath, desPath);  
    20. }  

    问题 
            如果是windows环境安装则需要设置path环境配置,如D:Program FilesGraphicsMagick-1.3.12-Q16;(此为GraphicsMagick的安装目录),各种版本官网下载 

            报错信息"gm convert: No decode delegate for this image format (abc.jpg)”系图片库缺失所致 
    引用
    http://qing.weibo.com/1838939461/6d9bfd4533000j33.html 
    ./configure结果 

    GraphicsMagick is configured as follows. Please verify that this 
    configuration matches your expectations. 

    Host system type : x86_64-unknown-linux-gnu 
    Build system type : x86_64-unknown-linux-gnu 

    Option            Configure option              Configured value 
    ----------------------------------------------------------------- 
    Shared libraries  --enable-shared=no            no 
    Static libraries  --enable-static=yes           yes 
    GNU ld            --with-gnu-ld=yes             yes 
    Quantum depth     --with-quantum-depth=8        8 

    Delegate Configuration: 
    BZLIB             --with-bzlib=yes              no 
    DPS               --with-dps=yes                no 
    FlashPIX          --with-fpx=no                 no 
    FreeType 2.0      --with-ttf=yes                no 
    Ghostscript       None                          gs (unknown) 
    Ghostscript fonts --with-gs-font-dir=default    none 
    Ghostscript lib   --with-gslib=no               no 
    JBIG              --with-jbig=yes               no 
    JPEG v1           --with-jpeg=yes               no (需安装 jpeg delegate library) 
    JPEG-2000         --with-jp2=yes                no 
    LCMS              --with-lcms=yes               no 
    Magick++          --with-magick-plus-plus=yes   yes 
    PERL              --with-perl=no                no 
    PNG               --with-png=yes                no(需安装 png delegate library) 
    TIFF              --with-tiff=yes               no 
    TRIO              --with-trio=yes               no 
    Windows fonts     --with-windows-font-dir=      none 
    WMF               --with-wmf=yes                no 
    X11               --with-x=                     no 
    XML               --with-xml=yes                no 
    ZLIB              --with-zlib=yes               yes 
    make 
    sudo make install 
    Delegate Library安装 

    JPEG delegate library
     
    > gm convert 470f1bb8c5a98.jpg -resize 100x100 out.jpg 
    gm convert: No decode delegate for this image format (470f1bb8c5a98.jpg). 
    官方建议:This exception indicates that an external delegate library or its headers were not available when ImageMagick was built. To add support for the image format, download and install the requisite delegate library and its header files and reconfigure, rebuild, and reinstall ImageMagick. As an example, lets add support for the JPEG image format. First we install the JPEG RPMS: 
    原因是没有安装jpeg的包,这个可以在之前configure的结果中看出来,此时GraphicsMagick需要重新configure及build。 
    1)在GraphicsMagick官方网站提供的delegates下载页面中找到jpeg的包:libjpeg-6b.tar.gz。 
    2)安装jpeg delegate library. configure -> make -> sudo make install 
    3)重新安装GraphicsMagick (configure时会发现jpeg已安装) 

    PNG delegate library 
    gm convert: No decode delegate for this image format (ben3.png). 
    1)在sourceforge下载libpng-1.4.7.tar.gz  (libpng-1.5.2.tar.gz 版本装上后,GraphicsMagick 在make时会报一个‘去引用’的错,原因未知) 
    2)安装png delegate library. configure -> make -> sudo make install 
    3)重新安装GraphicsMagick (configure时会发现png已安装) 
    注: 由于之前安装过一次libpng-1.5.2,rm /usr/local/lib/libpng*,在重新安装了1.4.7后,仍有错误:gm: error while loading shared libraries: libpng14.so.14: cannot open shared object file: No such file or directory. 
    运行sudo ldconfig进行自动清理。

    资料 
    IM4JAVA+GraphicsMagick处理网站图片:http://javantsky.iteye.com/blog/747807 
    关于GraphicsMagick+im4java的研究心得:http://yunduxiaocheng-gmail-com.iteye.com/blog/919457 
    GraphicsMagick+im4java图片处理方法:http://www.beiqiu.com/article/106.html 
    GraphicsMagick官网:http://www.graphicsmagick.org/index.html 
    GraphicsMagick官网delegates下载页面:ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates/
  • 相关阅读:
    [置顶] Guava学习之Lists
    Study notes for B-tree and R-tree
    uva 620 Cellular Structure
    [置顶] 程序员面试之道(《程序员面试笔试宝典》)之看着别人手拿大把的offer,不淡定了怎么办?
    HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)
    有N个正实数(注意是实数,大小升序排列) x1 , x2 ... xN,另有一个实数M。 需要选出若干个x,使这几个x的和与 M 最接近。 请描述实现算法,并指出算法复杂度
    C# 未能加载文件或程序集“MySQLDriverCS..." 错误解决
    LA 3942 Remember the Word(前缀树&树上DP)
    原根-快速求解一个数的原根
    线程初步了解
  • 原文地址:https://www.cnblogs.com/SZLLQ2000/p/5189895.html
Copyright © 2020-2023  润新知