图片截取,前端传来截图坐标,后端进行处理
public static boolean CutImage(String path1,String path2,int x,int y,int w,int h){
FileInputStream fileInputStream=null;
ImageInputStream iis=null;
boolean flag = false;
File file = new File(path2);
if (!file.getParentFile().exists() || file.getParentFile().isDirectory())
{
// 创建文件保存路径
file.getParentFile().mkdirs();
}
try {
//读取图片文件,建立文件输入流
fileInputStream=new FileInputStream(path1);
//创建图片的文件流 迭代器
Iterator<ImageReader> it = null;
int lastIndexOf = path1.lastIndexOf(".");
String format = "";
if(-1 != lastIndexOf){
format = path1.substring(lastIndexOf+1);
}
if("jpg".equals(format.toLowerCase()) || "jpeg".equals(format.toLowerCase()) ){
it = ImageIO.getImageReadersByFormatName("jpg");
}else if("png".equals(format.toLowerCase())){
it = ImageIO.getImageReadersByFormatName("png");
}
ImageReader reader=it.next();
//获取图片流 建立文图 文件流
iis=ImageIO.createImageInputStream(fileInputStream);
//获取图片默认参数
reader.setInput(iis, true);
ImageReadParam param=reader.getDefaultReadParam();
//定义裁剪区域
Rectangle rect=new Rectangle(x,y,w,h);
param.setSourceRegion(rect);
BufferedImage bi=reader.read(0,param);
ImageIO.write(bi, format.toLowerCase(), file);
flag = true;
} catch (Exception e) {
LOGGER.debug("图片裁剪失败,原因:");
e.printStackTrace();
flag = false;
}finally{
try {
if(fileInputStream!=null){
fileInputStream.close();
}
if(iis!=null){
iis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}