Jmagic的常用方法


1 Jmagic的基本安装和使用

1)  下载和安装文件

下载安装包 ImageMagick-6.8.0-4-Q16-windows 和jmagick-win-6.3.9-Q8

默认安装在C:\Program Files\ImageMagick-6.3.9-Q8 中,讲此目录当中的所有dll文件拷贝到WINDOWS\system32文件夹下。并将jmagick-win-6.3.9-Q8.zip这个压缩包中的jmagick.dll文件拷贝到C:\Program Files\ImageMagick-6.3.9-Q8和jdk的bin这两个目录中。

2)  配置路径

将C:\Program Files\ImageMagick-6.3.9-Q8添加到PATH环境变量中

3)  在工程中引用

Project->properties->java Build Path->Add JARs 添加jmagick.jar

使用时,方法中先写System.setProperty("jmagick.systemclassloader","no");在系统初始化的时候,若 jmagick.systemclassloader这个属性值为空或者为yes的时候,执行

ClassLoader.getSystemClassLoader().loadClass("magick.MagickLoader").newInstance();  

其他执行System.loadLibrary("JMagick");

我们这里需要调用库的JMagick所以在程序运行的时候要先将属性值设置为 “no”

4)参考文档 http://downloads.jmagick.org/jmagick-doc/

2读取图片

a)读取本地文件

String pic=”D://pic.png”;

ImageInfo srcInfo = new ImageInfo(pic);

MagickImage srcImage = new MagicImage(srcInfo);

   b)读取url文件

String url = “**********”;

ImageInfo srcInfo = new ImageInfo(url);

MagickImage srcImage = new MagicImage(srcInfo);

 读取的文件不存在抛异常:No image to scale

3 缩放图片

   MagickImage resultImage = srcImage.scaleImage(int cols,introws);

   其中resultImage为结果图片,srcImage为原图。Cols为目标图片的宽width值,rows为目标图片的高度height值。当高度和宽度超过目标图的时候,会做放大处理。

不同于BufferedImage的缩放用法

   BufferedImageresultImage=null;

  BufferedImage srcImage = ImageIO.read(picFile);

  resultImage.getGraphics().drawImage(srcImage,startX,startY,

width,height,null);

   其中当宽度width和height超过原图时会不做处理。

4 图片叠加

  基本用法:

  BackgroundImage.compositeImage(compOp,srcImage,xOff,yOff)

其中 backgroundImage为底图 MagickImage

     SrcImage为透明图MagickImage

     compOp为叠加图片的参数。

     (xOff,yOff)为透明图在底图上叠加的起点坐标

boolean

compositeImage(int compOp,MagickImage compImage, int xOff, int yOff) 

 

  在文档中如上定义。其中compOp的值为CompositeOperator中定义的参数。不同的底色用法参数值选取也不同。这里介绍几种常用的方法

   4.1 背景图片上叠加非透明图片

       常用案例: 给照片加框,图片底部添加商业logo信息

backGroundImage.compositeImage(CompositeOperator.SrcOverCompositeOp,srcImage,xOff,yOff)

   4.2 背景图片上叠加透明底图片

      常用案例:背景图片上添加水印和logo信息

 backGroundImage.compositeImage(CompositeOperator. PlusCompositeOp,srcImage,xOff,yOff)

   4.3 蒙版效果

      透明底水印上非透明部分取自于背景图。透明部分不变

backGroundImage.compositeImage(CompositeOperator. AtopCompositeOp

,srcImage,xOff,yOff)

      区别于OutCompositeOp 透出的彩色部分为黑白。改变了grb的值。

5 图片剪切

Rectangl chopInfo = new Rectangle(startX,startY,width,height);

MagickImage resultImage  = scaledPicImage.cropImage(chopInfo);

6 图片旋转

 MagickImage resultImage =templateImage.rotateImage(degrees);

其中double degrees为旋转的角度正值时顺时针旋转,负数时逆时针旋转

旋转得到图resultImage是长宽为原图*(cos(degrees)+sin(degrees))的图片,多出的部分为白色。

7 保存结果

resultImage .setFileName(“newName”); 

               resultImage .writeImage(srcInfo);

               resultImage .destroyImages();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值