java 裁剪图片 参数 宽 高 自动按照比例来剪切

来源:互联网 发布:政治家族 知乎 编辑:程序博客网 时间:2024/05/20 22:26
package com.dakele.activity.common.utils;


import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.UUID;


import javax.imageio.ImageIO;


public class ImageUtil1 {


public String cutImage(String srcPath, int width, int height)
throws IOException {
File srcFile = new File(srcPath);
BufferedImage image = ImageIO.read(srcFile);
int srcWidth = image.getWidth(null);
int srcHeight = image.getHeight(null);
int newWidth = 0, newHeight = 0;
int x = 0, y = 0;
double scale_w = (double) width / srcWidth;
double scale_h = (double) height / srcHeight;
System.out.println("scale_w=" + scale_w + ",scale_h=" + scale_h);
// 按原比例缩放图片
if (scale_w < scale_h) {
newHeight = height;
newWidth = (int) (srcWidth * scale_h);
x = (newWidth - width) / 2;
} else {
newHeight = (int) (srcHeight * scale_w);
newWidth = width;
y = (newHeight - height) / 2;
}
BufferedImage newImage = new BufferedImage(newWidth, newHeight,
BufferedImage.TYPE_INT_RGB);
newImage.getGraphics()
.drawImage(
image.getScaledInstance(newWidth, newHeight,
Image.SCALE_SMOOTH), 0, 0, null);
// 保存缩放后的图片
String fileSufix = srcFile.getName().substring(
srcFile.getName().lastIndexOf(".") + 1);


String string = UUID.randomUUID().toString();


File destFile = new File(srcFile.getParent(), string + "." + fileSufix);


System.out.println(fileSufix);
System.out.println(destFile);
// 保存裁剪后的图片
ImageIO.write(newImage.getSubimage(x, y, width, height), fileSufix,
destFile);
return "/files" + "/" + string + "." + fileSufix;
}


public static void main(String[] args) throws Exception {
// String name =
// "D:/work/workspace/dev-1.2/target/dakele_act/files/435263,100.jpg";
// ImageUtil1 i = new ImageUtil1();
// String cutImage = i.cutImage(name, 340, 240);
// System.out.println(cutImage);
}
}
0 0
原创粉丝点击