您的位置:首页 > 编程语言 > Java开发

ImageMagick使用for java(im4java)

2015-06-16 17:06 615 查看
简介:用于读、写、处理图片文件,支持89种格式的图片文件,利用imageMagick可以根据web应用程序动态生成图片,也可以将一个或者一组图片改变大小、旋转、锐化、减色、增加特效等操作,并对操作结果进行保存(可以设置保存格式)。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。

ImageMagick命令:http://wenku.baidu.com/view/078062b069dc5022aaea007f.html

各种语言接口:(见http://www.imagemagick.org/script/api.php

Ada:G2F         C:MagickWand 和MagickCore          Ch:ChMagick          COM+:ImageMagickObject      C++:Magick++          java:JMagick和Im4java

开源中国社区中源码查看:http://www.oschina.net/code/explore/ImageMagick-6.6.6-6

使用方法:首先要安装ImageMagick这个工具,安装好这个工具后,再下载im4java包放到项目lib目录里就行了。

ImageMagick  java 接口(im4java api):http://im4java.sourceforge.net/api/   (如果进不了就从http://www.imagemagick.org/script/api.php =>java=>im4java
进入)

im4java源码下载:http://sourceforge.jp/projects/sfnet_im4java/downloads/im4java-1.3.2/im4java-1.3.2-src.tar.bz2/

[java] view
plaincopyprint?

public class ImageTools {  

  

    /** 

     * ImageMagick的路径 

     */  

    public static String imageMagickPath = null;  

    static {  

        /** 

         *  

         * 获取ImageMagick的路径 

         */  

        Properties prop = new PropertiesFile().getPropertiesFile();  

        //linux下不要设置此值,不然会报错  

        imageMagickPath = prop.getProperty("imageMagickPath");  

    }  

  

    /** 

     *  

     * 根据坐标裁剪图片 

     *  

     * @param srcPath   要裁剪图片的路径 

     * @param newPath   裁剪图片后的路径 

     * @param x         起始横坐标 

     * @param y         起始纵坐标 

     * @param x1        结束横坐标 

     * @param y1        结束纵坐标 

     */  

  

    public static void cutImage(String srcPath, String newPath, int x, int y, int x1,   int y1) throws Exception {  

        int width = x1 - x;  

        int height = y1 - y;  

        IMOperation op = new IMOperation();  

        op.addImage(srcPath);  

        /** 

         * width:  裁剪的宽度 

         * height: 裁剪的高度 

         * x:       裁剪的横坐标 

         * y:       裁剪的挫坐标 

         */  

        op.crop(width, height, x, y);  

        op.addImage(newPath);  

        ConvertCmd convert = new ConvertCmd();  

  

        // linux下不要设置此值,不然会报错  

        convert.setSearchPath(imageMagickPath);  

  

        convert.run(op);  

    }  

  

    /** 

     *  

     * 根据尺寸缩放图片 

     * @param width             缩放后的图片宽度 

     * @param height            缩放后的图片高度 

     * @param srcPath           源图片路径 

     * @param newPath           缩放后图片的路径 

     */  

    public static void cutImage(int width, int height, String srcPath,  String newPath) throws Exception {  

        IMOperation op = new IMOperation();  

        op.addImage(srcPath);  

        op.resize(width, height);  

        op.addImage(newPath);  

        ConvertCmd convert = new ConvertCmd();  

        // linux下不要设置此值,不然会报错  

        convert.setSearchPath(imageMagickPath);  

        convert.run(op);  

  

    }  

  

    /** 

     * 根据宽度缩放图片 

     *  

     * @param width            缩放后的图片宽度 

     * @param srcPath          源图片路径 

     * @param newPath          缩放后图片的路径 

     */  

    public static void cutImage(int width, String srcPath, String newPath)  throws Exception {  

        IMOperation op = new IMOperation();  

        op.addImage(srcPath);  

        op.resize(width, null);  

        op.addImage(newPath);  

        ConvertCmd convert = new ConvertCmd();  

        // linux下不要设置此值,不然会报错  

        convert.setSearchPath(imageMagickPath);  

        convert.run(op);  

    }  

  

    /** 

     * 给图片加水印 

     * @param srcPath            源图片路径 

     */  

    public static void addImgText(String srcPath) throws Exception {  

        IMOperation op = new IMOperation();  

        op.font("宋体").gravity("southeast").pointsize(18).fill("#BCBFC8")  

                .draw("text 5,5 juziku.com");  

        op.addImage();  

        op.addImage();  

        ConvertCmd convert = new ConvertCmd();  

        // linux下不要设置此值,不然会报错  

        convert.setSearchPath(imageMagickPath);  

        convert.run(op, srcPath, srcPath);  

    }  

  

    public static void main(String[] args) throws Exception {  

        // cutImage("D:\\test.jpg", "D:\\new.jpg", 98, 48, 370,320);  

        // cutImage(200,300, "/home/1.jpg", "/home/2.jpg");  

        addImgText("//home//1.jpg");  

    }  

}  

 

注意事项:如果是在windows下运行,则需要配置ImageMagick的路径(现在很多安装程序都不需要设置,已经自动帮你设置好了):

在环境变量path中添加(C:\Program Files\ImageMagick-6.7.5-Q16;) 

或者

[java] view
plaincopyprint?

public static String imageMagickPath;  

Properties prop = new PropertiesFile().getPropertiesFile();   

imageMagickPath = prop.getProperty("imageMagickPath");  

ConvertCmd convert = new ConvertCmd();  

convert.setSearchPath(imageMagickPath);   

在config.properties文件里了,内容如下所示: imageMagickPath=C:\\Program Files\\ImageMagick-6.7.5-Q16;

如果是在linux平台下,千万不需要配置,设置了会报错。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: