/**
* 压缩图片,不变形
* @param filePath 源文件路径
* @param toPath 缩略图路径
* @param width 设定宽
* @param height 设定长
*/
public static void changeSize(String filePath, String toPath,int width,int height) throws MagickException{
ImageInfo info = null;
MagickImage image = null;
Dimension imageDim = null;
MagickImage scaled = null;
try{
info = new ImageInfo(filePath);
image = new MagickImage(info);
imageDim = image.getDimension();
//图片尺寸的大小处理,如果长宽都小于规定大小,则返回,如果有一个大于规定大小,则等比例缩放
int srcH = imageDim.width;
int srcW = imageDim.height;
if (srcH <= height && srcW <= width) {
return;
}
int tmpH = width;
int tmpW = height;
//在长度和宽度都做了限制,不能超过设定值
while (srcH > height || srcW > width) {
if(srcW > width) {
tmpH = srcH * width / srcW;
srcH = tmpH;
srcW=width;
}
if(srcH > height) {
tmpW = srcW * height / srcH;
srcW = tmpW;
srcH=height;
}
}
scaled = image.scaleImage(srcW, srcH);//小图片文件的大小.
scaled.setFileName(toPath);
scaled.writeImage(info);
}finally{
if(scaled != null){
scaled.destroyImages();
}
}
}
/**
* 水印(图片logo)
* @param filePath 源文件路径
* @param toImg 修改图路径
* @param logoPath logo图路径
* @throws MagickException
*/
public static void initLogoImg(String filePath, String toImg, String logoPath) throws MagickException {
ImageInfo info = new ImageInfo();
MagickImage fImage = null;
MagickImage sImage = null;
MagickImage fLogo = null;
MagickImage sLogo = null;
Dimension imageDim = null;
Dimension logoDim = null;
try {
fImage = new MagickImage(new ImageInfo(filePath));
imageDim = fImage.getDimension();
int width = imageDim.width;
int height = imageDim.height;
if (width > 660) {
height = 660 * height / width;
width = 660;
}
sImage = fImage.scaleImage(width, height);
fLogo = new MagickImage(new ImageInfo(logoPath));
logoDim = fLogo.getDimension();
int lw = width / 8;
int lh = logoDim.height * lw / logoDim.width;
sLogo = fLogo.scaleImage(lw, lh);
sImage.compositeImage(CompositeOperator.AtopCompositeOp, sLogo, width-(lw + lh/10), height-(lh + lh/10));
sImage.setFileName(toImg);
sImage.writeImage(info);
} finally {
if(sImage != null){
sImage.destroyImages();
}
}
}
来源:考试大-Java认证
责编:xxm 评论 纠错