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 所需所有文件,jmagick.dll,jmagick.jar 还有安装文件, 以及linux安装说明! jmagick jmagick.jar jmagick资料 jmagick缩略图 jmagick jmagick.jar jmagick资料 jmagick缩略图
Jmagick32位的和Jmagick64位的Jmagick.dll,Jmagick.jar 图片处理必备工具
压缩包在java下使用jmagick的所有必需工具和安装包,还有使用实例。
jmagick java 图像处理jmagick java 图像处理jmagick java 图像处理jmagick java 图像处理jmagick java 图像处理
jmagick.zip
jmagick.jar 及用法。。。。。。。。。。
jmagick-6.2.4-1-IM-6.2.5.zip
jmagick.jar java图像应用
jmagick image generate or operator library
强大的图片处理工具,imagemagick的java接口
JMagick-6.0.4-0.tar 下载
jmagick处理图片,图片高质量压缩,图片加水印。
jmagick-win-6.3.9 java 图片裁剪工具
JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对 ImageMagick API的Java访问接口,因此也将比纯Java实现的图片操作函数在速度上要快。
压缩包在java下使用jmagick的所有必需工具和安装包,还有使用实例。
jmagick.jar,ImageMagick.exe,测试过,可用
还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 jmagick.jar
JMagick图片处理 缩略图 水印 切图 压缩图片
java 图片放缩结束...防止内存泄露
ImageMagick-6.3.9+jmagick组合,此组合已测试通过