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学习

TIMIT语音库-----下载和matlab读取

TIMIT语音库为大多数论文及研究中常用的语音库,适用于语音识别、说话人识别等语音信号处理。 在MIT网站可以找到一些样例, 为 16kHz sampling, 16 bit sample, P...
  • u010384318
  • u010384318
  • 2013年12月25日 11:37
  • 6433

语音识别系统之kaldi----在timit上的实验

最近真的太忙了,真的不知道什么时候可以停下来忙。kaldi之前的事情感觉似乎没人愿意加入我们研究的行列,也许算是一种冲动吧。现在就当时自己做自己的吧。希望后面有不断新的内容能够上来。今天在@零落_Wo...
  • u010384318
  • u010384318
  • 2014年01月08日 23:22
  • 5992

TIMIT语音库(续)

链接: http://blog.csdn.net/jwb361/article/details/49307885
  • zhangxueyang1
  • zhangxueyang1
  • 2017年01月08日 11:08
  • 165

Kaldi学习手记(二):Timit实例运行

Timit是LDC搜集的一个语料库,TIMIT语音库有着准确的音素标注,是一个学习用的好例子。在kaldi里面可以找到其语音识别的范例。 但是由于这个数据库是商业用的,所以Kaldi里面并没有附带...
  • by21010
  • by21010
  • 2015年11月24日 11:23
  • 2688

GraphicsMagick+im4java实现高质量大图的处理

http://www.open-open.com/lib/view/open1355754261963.html 做网站往往需要处理各种各样的图片,对于jdk自带的一套图片处理库,他的特点是...
  • newjueqi
  • newjueqi
  • 2014年12月14日 14:53
  • 4121

ReviewBoard 的安装和使用(一)—— 安装

安装环境:CentOS-6.7,ReviewBoard-2.5.1.1安装环境的配置确认当前系统中有如下包,若没有,使用yum安装。 httpd-2.2.15 python-2.6.6 mysql-5...
  • fengyishang
  • fengyishang
  • 2015年12月17日 14:49
  • 5443

TCPCopy的安装和使用

官网地址 https://code.google.com/p/tcpcopy/  里面有包的下载地址、文档 和常见问题。 TCPCopy 有传统架构和新架构,新架构比较复杂,一般情况下传统架构就可...
  • wind19
  • wind19
  • 2014年04月17日 09:46
  • 10405

ImageMagick安装配置 for java项目 (使用jmagick)

ImageMagick安装配置 for java项目 (使用jmagick)   目录: 一、ImageMagick介绍 二、在Linux上用源码安装ImageMagick与jmagick...
  • zheng2008hua
  • zheng2008hua
  • 2012年02月06日 22:38
  • 809

安装jmagick

来源:http://www.rabuser.info/jmagick.php#english 更多内容链接:http://sourceforge.net/apps/mediawiki/jmagick...
  • Longerandlonger
  • Longerandlonger
  • 2012年12月10日 13:43
  • 788

ImageMagick +Jmagick安装

目录 一、ImageMagick介绍 二、安装支持库 三、在Linux上用源码编译安装ImageMagick与Jmagick 四、在Linux上使用yum安装ImageMagick与Jmagick 五...
  • y_angteng
  • y_angteng
  • 2015年01月14日 22:31
  • 279
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jmagick的安装和使用
举报原因:
原因补充:

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