`
zhuqiang5138
  • 浏览: 31653 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

jmagick开发 备忘

 
阅读更多

 

1、为什么要使用jmagick,我大概是这么想的,因为jmagick是与服务器本地的ImageMagick配合使用的可以很好的

   处理图片较多的项目缩略图缩放问题,还有一些图片编辑功能的扩展。

2、配置

a)下载ImageMagick-6.6.2-9-Q16-windows-dll.exe并安装,安装后系统会自动在环境变量path中添加值

C:\Program Files\ImageMagick-6.6.2-Q16

b) jmagick.dll文件都拷到C:\WINDOWS\system32 

将文件jmagick.dll 拷到tomcatbin目录下 
jmagick.jar复制WEB-INFlib中, 
就可以了,看你的情况应该是你的tomcat的环境没有配置好的问题, 
再检查下吧 

3API可以参看

       http://downloads.jmagick.org/jmagick-doc/

下面举例讲解下代码的实现:

System.setProperty("jmagick.systemclassloader", "no");// 这个没什么好说的,照办就是了 

1、压缩图片

//该方法为将图片按比率高清压缩为150*120范围内的缩略图,在上传函数中调用。 
//
参数:filePath为上传图片的路径,toPath为压缩后图片的路径。 
public boolean scale(String filePath, String toPath) throws Exception { 
  System.setProperty("jmagick.systemclassloader","no"); 
  boolean sf = false; 
  ImageInfo info = null; 
  MagickImage image = null; 
  Dimension imageDim = null; 
  MagickImage scaled = null; 
  try { 
  info = new ImageInfo(filePath); 
  image = new MagickImage(info); 
  imageDim = image.getDimension(); 
  float width = imageDim.width; 
  float height = imageDim.height; 
  float bl = 1; 
  float bl_w = width / 150; 
  float bl_h = height / 120; 
  if (bl_w >= bl_h) { 
  bl = bl_w; 
  } 
  else { 
  bl = bl_h; 
  } 
  width = width / bl; 
  height = height / bl; 
  int new_width = (int) width; 
  int new_height = (int) height; 
  scaled = image.
scaleImage(new_width, new_height); 
  scaled.setFileName(toPath); 
  scaled.writeImage(info); 
  sf = true; 
  } 
  catch (Exception ex) { 
  sf = false; 
  } 
  finally { 
  if (scaled != null) { 
  scaled.destroyImages(); 
  } 
  } 
  return sf; 
} 
2
、改变背景色

ImageInfo info = null; 
MagickImage image = null; 
info = new ImageInfo(filePath); 
image = new MagickImage(info); 
image.setBackgroundColor(PixelPacket.queryColorDatabase("red")); 
image.
setBorderColor(PixelPacket.queryColorDatabase("green")); 
MagickImage borderedImage = image.borderImage(new Rectangle(0, 0, 10, 
* 20));

borderedImage.setFileName("D:/image/border.jpg"); 
borderedImage.writeImage(info); 

3、裁剪

Rectangle rect = new Rectangle(0, 0, 80, 40);

rect = new Rectangle(20, 20, 150, 120);

MagickImage cropped = image.cropImage(rect);

cropped.setFileName("D:/image/cropped.jpg"); 
cropped.writeImage(info); 

4、放大缩小

System.setProperty("jmagick.systemclassloader", "no");

        ImageInfo info;

        info = new ImageInfo(imgPath);

        image = new MagickImage(info);

        MagickImage scaled = image.zoomImage(toWidth, toHeight);

        scaled.setFileName(zoomPath);

scaled.writeImage(info);

 

5、旋转

  

   System.setProperty("jmagick.systemclassloader", "no");

         ImageInfo info = new ImageInfo();

          //这里不知道问什么我之前做的时候 用一个参数的构造函数 怎么也没用

         image = new MagickImage(info, bytes);

          //这里是需要旋转度数的

         rotate = image.rotateImage(angle);

          //返回一个字节流数组

   return rotate.imageToBlob(info);

 

 6、黑白(变灰)

  

   MagickImage image = null;

        System.setProperty("jmagick.systemclassloader", "no");

        ImageInfo info = new ImageInfo(fromFileStr);

        image = new MagickImage(info);

        image.imageToBlob(info);

        QuantizeInfo quantizeInfo = new QuantizeInfo();

        quantizeInfo.setColorspace(ColorspaceType.GRAYColorspace);

        image.quantizeImage(quantizeInfo);

        image.setFileName(saveToFileStr);

        image.writeImage(info);

 

7、还有很多的效果

 

// 绘制图片..把文件写在图片上面 
MagickImage blankImage = new MagickImage();

byte[] pixels = new byte[200 * 100 * 4];

for (int i = 0; i < 200 * 100; i++) {

pixels[4 * i] = (byte) 255;

pixels[4 * i + 1] = (byte) 255;

pixels[4 * i + 2] = (byte) 255;

pixels[4 * i + 3] = (byte) 0;

 } 
blankImage.constituteImage(200, 100, "RGBA", pixels); 
DrawInfo drawInfo = new DrawInfo(new ImageInfo());

drawInfo.setPrimitive("Rectangle 10 10 190 90"); drawInfo.setStroke(PixelPacket.queryColorDatabase("red")); 
drawInfo.setFill(PixelPacket.queryColorDatabase("white")); 
blankImage.drawImage(drawInfo); 
ImageInfo blankImageInfo = new ImageInfo();

DrawInfo annotateInfo = new 
DrawInfo(blankImageInfo);

annotateInfo.setOpacity(0); 
annotateInfo.setFont("fixed"); 
annotateInfo.setFill(PixelPacket.queryColorDatabase("green")); 
annotateInfo.setText("Wangxiaochen"); 
annotateInfo.setGeometry("+30+30"); 
blankImage.annotateImage(annotateInfo); 
blankImage.setFileName("D:/image/blank.jpg"); 
blankImage.writeImage(info); 
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

//透明

blankImage.transparentImage( PixelPacket.queryColorDatabase("white"), 65535); 
blankImage.setFileName("D:/image/transparent.png"); 
blankImage.writeImage(info); 
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

// 剪裁

Rectangle rect = new Rectangle(0, 0, 80, 40);

rect = new Rectangle(20, 20, 150, 120);

MagickImage cropped = image.cropImage(rect); cropped.setFileName("D:/image/cropped.jpg"); 
cropped.writeImage(info); 
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

//磨尖

MagickImage sharpened = image.sharpenImage(1.0, 5.0); 
sharpened.setFileName("D:/image/sharpened.jpg"); 
sharpened.writeImage(info); 
// Despeckle image

MagickImage despeckled = image.despeckleImage(); 
despeckled.setFileName("D:/image/despeckled.jpg"); 
despeckled.writeImage(info); 
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

// Convolve image

double[] kernel = new double[9];

for (int i = 0; i < 9; i++) {

kernel[i] = 1.0;

}

kernel[4] = 2.0;

MagickImage convolvedImage = image.convolveImage(3, kernel); 
convolvedImage.setFileName("D:/image/convolved.jpg"); 
convolvedImage.writeImage(info); 

<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

起作用的都是MagickImage类里的一下方法

blurImage动感摸糊 
charcoalImage
变成木炭图 
edgeImage 
尖锐 
embossImage
浮雕 
flipImage
垂直翻转 
flopImage
水平翻转 
gaussianBlurImage
朦胧 
implodeImage
向内破裂 
magnifyImage
放大 
medianFilterImage
滤波 
minifyImage
缩小 
rotateImage(90.0);//
旋转 
shearImage(50.0, 10.0);//
缩放 
image.scaleImage(100, 80);
修剪 
montageImages(new MontageInfo(new ImageInfo()));
为图片加上边框 
oilPaintImage
油漆形象 
reduceNoiseImage
减少噪音形象 
rollImage
摆动 
sampleImage
调整宽和高 
scaleImage 
调整宽和高 
spreadImage
图片变散 
swirlImage
涡流 
unsharpMaskImage
锐化掩模图像 
waveImage
为图像加上毛边

zoomImage 变焦

 

分享到:
评论
2 楼 ge_cc 2011-10-24  
ge_cc 写道
//这里不知道问什么我之前做的时候 用一个参数的构造函数 怎么也没用
         image = new MagickImage(info, bytes);


一个参数的构造同不管用,想问下那个bytes是什么?
1 楼 ge_cc 2011-10-24  
//这里不知道问什么我之前做的时候 用一个参数的构造函数 怎么也没用
         image = new MagickImage(info, bytes);

相关推荐

    Jmagick32位的和Jmagick64位的Jmagick.dll,Jmagick.jar

    《Jmagick:32位与64位的差异及应用》 Jmagick是一款将ImageMagick图像处理库与Java平台相结合的扩展库,它允许Java开发者利用强大的ImageMagick功能来处理图像。在Java应用程序中,Jmagick通过Jmagick.dll动态链接...

    jmagick jmagick.jar jmagick资料

    里面包括jmagick 所需所有文件,jmagick.dll,jmagick.jar 还有安装文件, 以及linux安装说明! jmagick jmagick.jar jmagick资料 jmagick缩略图 jmagick jmagick.jar jmagick资料 jmagick缩略图

    jmagick安装和配置

    - **ImageMagick**: 这是一个跨平台的图像处理工具集,提供了一系列命令行工具和开发库,用于读写、转换和编辑各种图像格式。 在这里,我们有`ImageMagick-5.5.7-Q8-windows-dll.exe`,这是一个适用于Windows系统的...

    jmagick.jar 用法

    **JMagick 概述** JMagick 是一个 Java 包装器库,它提供了对 ImageMagick 图像处理库的访问。ImageMagick 是一个功能强大的跨平台图像处理工具,而 JMagick 则是将这些功能引入 Java 应用程序的桥梁。通过 JMagick...

    jmagick 例子

    在计算机视觉和Web开发领域,图像处理是一项至关重要的任务。Java作为一种广泛使用的编程语言,提供了多种图像处理库,其中JMagick是一个非常实用的工具,它为Java开发者提供了访问ImageMagick的强大功能。本文将...

    jmagick-win-6.3.9-Q16

    《JMagick:Java图像处理的强大工具》 ...无论是在Web开发、桌面应用还是移动应用中,JMagick都展现出了其广泛的应用价值。对于任何需要图像处理功能的Java项目,JMagick都是一个值得考虑的选择。

    jmagick-win-6.3.9

    - 网页设计:在网页开发中,JMagick可以动态生成图表或自定义的图形元素,提升用户体验。 - 安全监控:在安防系统中,可以利用JMagick进行视频帧的截取和分析,辅助识别异常行为。 总的来说,JMagick-win-6.3.9是...

    jmagick-win-5.5.7-Q8.zip

    在Java开发中,图像处理是一个不可或缺的部分。JMagick作为Java与ImageMagick之间的桥梁,提供了一种在Java环境中使用ImageMagick的强大功能。本文将深入探讨JMagick的核心概念、安装过程、使用方法以及一些实际的...

    jmagick.zip

    在实际开发中,JMagick与ImageMagick结合使用,可以实现以下功能: 1. 图像格式转换:支持各种图像格式之间的自由转换,如JPEG到PNG,GIF到BMP等。 2. 图像缩放和裁剪:可以根据需求调整图像大小或裁剪图像的一部分...

    jmagick6.4.0

    **JMagick 6.4.0:Java与ImageMagick的强大结合** JMagick是ImageMagick图像处理库的一个Java接口,它为Java开发者提供了一种高效且灵活的方式来处理和操作图像。ImageMagick是一个功能丰富的开源跨平台工具集,...

    JMagick图片处理

    总的来说,JMagick是Java开发中一个强大的图像处理工具,它提供了丰富的功能,使得开发者可以方便地进行各种图像操作,从而提升应用程序的功能性和用户体验。通过深入理解和熟练掌握JMagick,开发者可以创建出高效、...

    JMagick-5.5.6-0.tar.gz

    总之,JMagick-5.5.6-0是Java Web开发中的一个强大工具,它使开发者能够方便地利用ImageMagick的强大功能,为应用程序带来丰富的图形处理能力。通过深入研究其源代码,我们可以更好地理解和利用这个库,为我们的项目...

    jmagick linux file

    jmagick image generate or operator library

    JMagick-6.0.4-0.tar

    JMagick-6.0.4-0.tar 下载

    jmagick 用法

    **JMagick 用法详解** JMagick 是一个 Java 的图像...在实际开发中,可以根据需求进一步探索其高级特性和功能,如图像过滤、颜色空间转换等。记得在使用过程中查阅 JMagick 的官方文档以获取更详细的信息和示例代码。

    jmagick.jar java图像应用

    jmagick.jar java图像应用

    ImageMagick-6.3.9+jmagick组合

    ImageMagick是一款强大的开源...这在开发基于Java的图像处理应用时尤其有用,例如在线图片编辑服务、自动化图像处理脚本等。通过这个组合,开发者可以高效地处理和转换图像,同时享受Java带来的便捷性和跨平台优势。

    jmagick图片处理

    jmagick处理图片,图片高质量压缩,图片加水印。

    jmagick-6.2.4-1-IM-6.2.5.zip

    标题中的"jmagick-6.2.4-1-IM-6.2.5.zip"指的是JMagick的一个特定版本,这是一个Java绑定的ImageMagick库,用于处理图像操作和转换。ImageMagick是一个开源的跨平台命令行工具集,广泛用于在各种文件格式之间进行...

    jmagick 软件、安装说明(window和linux两个版本)

    开发注意事项** - 确保JMagick与ImageMagick版本兼容,否则可能导致运行错误。 - 由于JMagick依赖底层库,因此在不同操作系统上的安装和使用可能会有所不同。 - 在使用JMagick时,注意内存管理和性能优化,避免处理...

Global site tag (gtag.js) - Google Analytics