Jmagick的安装和使用

原创 2007年10月11日 09:47:00

jmagick是什么?不用我说了吧。

jmagick的安装(基于windows),精简版步骤:
1、下载jmagick-6.2.6-win-im-6.2.8.zip,并把jmagick.jar放到应用的lib下,我放到%JAVA_HOME%/jre/lib/ ext/下,jmagick.dll拷贝到SYSTEM32下;
2、安装ImageMagick-6.2.8-3-Q16-windows-dll.exe软件
3、重新启动机器
麻烦点,但对图片的处理能力,确实超乎想象的 

测试:

try{
   MagickImage image;
   String srcImage = "c://logo.jpg";
   ImageInfo info = new ImageInfo(srcImage);
   image = new MagickImage(info);
   DrawInfo drawInfo = new DrawInfo(new ImageInfo());
   drawInfo.setFill(PixelPacket.queryColorDatabase("red"));
   drawInfo.setOpacity(0);
   drawInfo.setPointsize(18);
   drawInfo.setFont("Arial");
   drawInfo.setTextAntialias(true);
   drawInfo.setGeometry("+10+10");
   image.annotateImage(drawInfo);
   image.setFileName("c://test.jpg");
   image.writeImage(new ImageInfo());
   image.destroyImages();
  }catch(Exception e){
   e.printStackTrace();
  }

实现给图片加水印功能(jmagick实现,适用于windows系统)

本例子暂时只能适用于windows
这篇文章http://blog.sina.com.cn/u/4964dd65010006iv 既适用于windows,也适用于linux
 
 String bg_filename="d://temptest//bg.jpg";
  String original_filename_500 =null;
  String watermark_filename = "d://temptest//bokee.png";
  final int MARK_H=15; //水印的高
  final int NO_MARK=100;//图片的高或者宽
  final int BOKEE_MARK=200;//图片宽在200
  final int HAS_MARK=300;  //图片宽在300以上
  final int Y_FONT=10;
  try {
   for(int i=1;i<=18;i++){  //做实验的时候我循环了18张
    original_filename_500="d://temptest//"+i+".jpg";
    File file_500=null;
    Image img=null;
    MagickImage mi_wm=null;
    try{
     file_500=new File(original_filename_500);
     img = ImageIO.read(file_500);
    }catch(Exception e){
     System.out.println("can not open "+original_filename_500+"500's photo");
    }
    if(img!=null){
     int width = img.getWidth(null);
     int height = img.getHeight(null);
     if(width<=NO_MARK||height<=NO_MARK){
      System.out.println(original_filename_500+" no watermark");
     }else{
      ImgTools imag = new ImgTools(width, height+MARK_H, bg_filename);
      imag.MakeBigByJMagickGB(bg_filename);
      ImageInfo ii_orig = new ImageInfo();
      ii_orig.setFileName(bg_filename);
      MagickImage mi_orig = new MagickImage(ii_orig);
      ImageInfo ii_wm_500 = new ImageInfo();
      ii_wm_500.setFileName(original_filename_500);
      MagickImage mi_wm_500 = new MagickImage(ii_wm_500);
      mi_orig.compositeImage(CompositeOperator.AddCompositeOp,mi_wm_500, 0, 0);
      mi_orig.setMagick("JPG");
      mi_orig.setCompression(CompressionType.JPEGCompression);
      final ImageInfo ii_result = new ImageInfo();
      ii_result.setQuality(90);
      if(width<=BOKEE_MARK&&width>NO_MARK){
       DrawInfo aInfo = new DrawInfo(ii_orig);
       aInfo.setFill(PixelPacket.queryColorDatabase("gray"));
       aInfo.setOpacity(0);
       aInfo.setPointsize(9);
       aInfo.setFont("Arial");
       aInfo.setTextAntialias(true);
       aInfo.setText("http://photo.bokee.com");
       int X=(width-NO_MARK)/2;
       int Y=height+Y_FONT;
       aInfo.setGeometry("+"+X+"+"+Y+"");
       mi_orig.annotateImage(aInfo);
      }else if(width>BOKEE_MARK&&width<=HAS_MARK) {
       DrawInfo aInfo = new DrawInfo(ii_orig);
       aInfo.setFill(PixelPacket.queryColorDatabase("gray"));
       aInfo.setOpacity(0);
       aInfo.setPointsize(9);
       aInfo.setFont("Arial");
       aInfo.setTextAntialias(true);
       String  domain="manzhouyexing02";
       aInfo.setText("http://photo.bokee.com/"+domain);
       int X=(width-(110+(5*domain.length()-1)))/2;
       int Y=height+Y_FONT;
       aInfo.setGeometry("+"+X+"+"+Y+"");
       mi_orig.annotateImage(aInfo);
      }else if(width>HAS_MARK) {
       ImageInfo ii_wm = new ImageInfo();
       ii_wm.setFileName(watermark_filename);
       mi_wm = new MagickImage(ii_wm);
       mi_orig.compositeImage(CompositeOperator.AddCompositeOp,mi_wm, 1, height);
       DrawInfo aInfo = new DrawInfo(ii_orig);
       aInfo.setFill(PixelPacket.queryColorDatabase("gray"));
       aInfo.setOpacity(0);
       aInfo.setPointsize(9);
       aInfo.setFont("Arial");
       aInfo.setTextAntialias(true);
       String domain="manzhouyexing02";
       aInfo.setText("http://photo.bokee.com/"+domain);
       int X=width-105-(5*domain.length()-1)-8;
       int Y=height+Y_FONT;
       aInfo.setGeometry("+"+X+"+"+Y+"");
       mi_orig.annotateImage(aInfo);
      }
      mi_orig.setFileName("d://temptest//"+i+"_"+1+".jpg");
      mi_orig.writeImage(ii_result);
      mi_orig.destroyImages();
      if(width>HAS_MARK)mi_wm.destroyImages();
     }
    }
   }
  } catch (MagickException me) {
   me.printStackTrace();
  }
  System.exit(0);
 }
 
这种实现的效果很不错。
大家可以看看下面的例子:
宽在100~200之间
 
宽在200~300之间
宽在300~500之间
如果宽在100或者高在100一下我们将不加水印。
 
JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对ImageMagickAPI的Java访问接口,因此也将比纯Java实现的图片操作函数在速度上要快。JMagick只实现了ImageMagicAPI的一部分功能,它的发行遵循LGPL协议
ImageMagick请参考其官方网站ImageMagick学习

关于最近使用imageMagick的Jmagick和im4java

JmagickMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对ImageMagick API的Java访问接口,因此也将比纯Java实现的图片操作函数...
  • DamonRush
  • DamonRush
  • 2016-06-23 21:56:59
  • 2709

Jmagick图形图像处理

胡升阳     2012.02.28 一、简介 JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对ImageMagickAPI的Java访问接...
  • hu_shengyang
  • hu_shengyang
  • 2012-02-29 22:07:37
  • 8741

jmagick图片处理

  • 2013年04月13日 17:23
  • 19.04MB
  • 下载

java Jmagick 图片缩略图处理

import java.awt.Dimension;import java.io.IOException;import magick.CompositeOperator;import magick.C...
  • zhm3023
  • zhm3023
  • 2010-11-23 10:57:00
  • 4769

ImageMagick 与 JMagick

ImageMagick 官网 http://www.imagemagick.org/script/index.php JMagick 官网 http://www.jmagick.org/index....
  • catoop
  • catoop
  • 2012-12-04 11:25:35
  • 4293

Centos7 安装最新的Jmagick 6.7.7 版本使用ImageMagick

1,安装环境yum install autoconf ImageMagick ImageMagick-devel需要C++类库。编译so文件的时候需要java的头文件,所以必须安装openjd yum...
  • freewebsys
  • freewebsys
  • 2014-11-27 13:03:00
  • 3187

<em>jmagick</em>.jar

还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 <em>jmagick</em>.jar... <em>Jmagick</em>32位的和<em>Jmagick</em>64位的<em>Jmagick</em>.dll,<em>Jmagick</em>.jar 立即下载 上传者...
  • 2018年04月14日 00:00

ImageMagick +Jmagick安装

目录 一、ImageMagick介绍 二、安装支持库 三、在Linux上用源码编译安装ImageMagick与Jmagick 四、在Linux上使用yum安装ImageMagick与Jmagick 五...
  • paulluo0739
  • paulluo0739
  • 2014-03-13 15:12:14
  • 2318

使用ImageMagick + Jmagick进行图片操作(续)

ImageMagick在Linux配置相对Windows麻烦一些,重点要注意的就是环境变量的设置。...
  • mydeman
  • mydeman
  • 2010-09-01 15:55:00
  • 4008

Kaldi运行timit语音库的部分结果与问题

使用Kaldi运行了timit的S5实例,只运行到了“tri3 : LDA + MLLT + SAT Training & Decoding”这一步,后面的"SGMM2”,"MMI+SGMM2","D...
  • cdj0311
  • cdj0311
  • 2014-01-12 16:27:22
  • 2563
收藏助手
不良信息举报
您举报文章:Jmagick的安装和使用
举报原因:
原因补充:

(最多只允许输入30个字)