im4java 处理图片

jopen 10年前

  1. windows下安装imagemagick
  2. im4java下载地址:http://sourceforge.net/projects/im4java/files/im4java-1.4.0/im4java-1.4.0-bin.tar.bz2/download

操作完上面2步,下面就很好操作了。因为im4java是基于imagemagick的commandline进行调用的java接口,不像 jmagick那样用java jni调用本地imagemagick的api那么复杂。其实安装imagemagick在任何平台都是一样的安装,在linux下面有rpm包,安装那个包,指定目录就可以了。windows一样,安装并指定安装路径就可以了。下面上代码

public static String FROM        = "E:/project/Test/src/com/8301.jpg";    public static String TO          = "E:/project/Test/src/com/8301_new.jpg";    public static String IMAGEMAGICK = "D:/Program Files (x86)/ImageMagick-6.8.7-Q16";    /**   * @param args   */  public static void main(String[] args) {      handlerImage(1000, 1000);  }    public static void handlerImage(int width, int height) {      IMOperation op = new IMOperation();      op.addImage(FROM);      op.resize(width, height);//压缩图片        op.addImage(TO);      ConvertCmd convert = new ConvertCmd();      convert.setSearchPath(IMAGEMAGICK);      try {          convert.run(op);      } catch (IOException | InterruptedException | IM4JavaException e) {          e.printStackTrace();      }  }    <!-- lang: java -->  /**    *     * 根据坐标裁剪图片    *     * @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);    }          <!-- lang: java -->  /**    * 给图片加水印    * @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);    }