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 拷到tomcat的bin目录下
将jmagick.jar复制WEB-INF下lib中,
就可以了,看你的情况应该是你的tomcat的环境没有配置好的问题,
再检查下吧
3、API可以参看
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 变焦
分享到:
相关推荐
《Jmagick:32位与64位的差异及应用》 Jmagick是一款将ImageMagick图像处理库与Java平台相结合的扩展库,它允许Java开发者利用强大的ImageMagick功能来处理图像。在Java应用程序中,Jmagick通过Jmagick.dll动态链接...
里面包括jmagick 所需所有文件,jmagick.dll,jmagick.jar 还有安装文件, 以及linux安装说明! jmagick jmagick.jar jmagick资料 jmagick缩略图 jmagick jmagick.jar jmagick资料 jmagick缩略图
- **ImageMagick**: 这是一个跨平台的图像处理工具集,提供了一系列命令行工具和开发库,用于读写、转换和编辑各种图像格式。 在这里,我们有`ImageMagick-5.5.7-Q8-windows-dll.exe`,这是一个适用于Windows系统的...
**JMagick 概述** JMagick 是一个 Java 包装器库,它提供了对 ImageMagick 图像处理库的访问。ImageMagick 是一个功能强大的跨平台图像处理工具,而 JMagick 则是将这些功能引入 Java 应用程序的桥梁。通过 JMagick...
在计算机视觉和Web开发领域,图像处理是一项至关重要的任务。Java作为一种广泛使用的编程语言,提供了多种图像处理库,其中JMagick是一个非常实用的工具,它为Java开发者提供了访问ImageMagick的强大功能。本文将...
《JMagick:Java图像处理的强大工具》 ...无论是在Web开发、桌面应用还是移动应用中,JMagick都展现出了其广泛的应用价值。对于任何需要图像处理功能的Java项目,JMagick都是一个值得考虑的选择。
- 网页设计:在网页开发中,JMagick可以动态生成图表或自定义的图形元素,提升用户体验。 - 安全监控:在安防系统中,可以利用JMagick进行视频帧的截取和分析,辅助识别异常行为。 总的来说,JMagick-win-6.3.9是...
在Java开发中,图像处理是一个不可或缺的部分。JMagick作为Java与ImageMagick之间的桥梁,提供了一种在Java环境中使用ImageMagick的强大功能。本文将深入探讨JMagick的核心概念、安装过程、使用方法以及一些实际的...
在实际开发中,JMagick与ImageMagick结合使用,可以实现以下功能: 1. 图像格式转换:支持各种图像格式之间的自由转换,如JPEG到PNG,GIF到BMP等。 2. 图像缩放和裁剪:可以根据需求调整图像大小或裁剪图像的一部分...
**JMagick 6.4.0:Java与ImageMagick的强大结合** JMagick是ImageMagick图像处理库的一个Java接口,它为Java开发者提供了一种高效且灵活的方式来处理和操作图像。ImageMagick是一个功能丰富的开源跨平台工具集,...
总的来说,JMagick是Java开发中一个强大的图像处理工具,它提供了丰富的功能,使得开发者可以方便地进行各种图像操作,从而提升应用程序的功能性和用户体验。通过深入理解和熟练掌握JMagick,开发者可以创建出高效、...
总之,JMagick-5.5.6-0是Java Web开发中的一个强大工具,它使开发者能够方便地利用ImageMagick的强大功能,为应用程序带来丰富的图形处理能力。通过深入研究其源代码,我们可以更好地理解和利用这个库,为我们的项目...
jmagick image generate or operator library
JMagick-6.0.4-0.tar 下载
**JMagick 用法详解** JMagick 是一个 Java 的图像...在实际开发中,可以根据需求进一步探索其高级特性和功能,如图像过滤、颜色空间转换等。记得在使用过程中查阅 JMagick 的官方文档以获取更详细的信息和示例代码。
jmagick.jar java图像应用
ImageMagick是一款强大的开源...这在开发基于Java的图像处理应用时尤其有用,例如在线图片编辑服务、自动化图像处理脚本等。通过这个组合,开发者可以高效地处理和转换图像,同时享受Java带来的便捷性和跨平台优势。
jmagick处理图片,图片高质量压缩,图片加水印。
标题中的"jmagick-6.2.4-1-IM-6.2.5.zip"指的是JMagick的一个特定版本,这是一个Java绑定的ImageMagick库,用于处理图像操作和转换。ImageMagick是一个开源的跨平台命令行工具集,广泛用于在各种文件格式之间进行...
开发注意事项** - 确保JMagick与ImageMagick版本兼容,否则可能导致运行错误。 - 由于JMagick依赖底层库,因此在不同操作系统上的安装和使用可能会有所不同。 - 在使用JMagick时,注意内存管理和性能优化,避免处理...