/**
* 根据点击坐标 截取控件元素周边图片
*
* @param path 大图图片路径
* @param x 截取位置X坐标
* @param y 截取位置Y坐标
* @param outPath 输出新图片路径
*/
private void cutImg(String path, int x, int y, String outPath) {
try {
System.out.println("Ready cut image :" + path + "\n\n outPath is :" + outPath);
File sourcePic = new File(path);
File outPic = new File(outPath);
BufferedImage pic = ImageIO.read(sourcePic);
int imgwidth = pic.getWidth();
int imgheight = pic.getHeight();
//针对图像识别模式和其他正常功能,获取缩略图大小需要分别开来
int widthInt, heightInt;
//取点击坐标周围80像素大小的图片
//如果截取的长度和高度超出图片本身大小,那么就截取到图片最边缘的位置
widthInt = x + 40 > imgwidth ? imgwidth - (x - 40) : 80;
heightInt = y + 25 > imgheight ? imgheight - (y - 25) : 50;
//参数依次为,截取起点的x坐标,y坐标,截取宽度,截取高度
BufferedImage pic2 = pic.getSubimage(isSnapshots ? x - 40 < 0 ? 0 : x - 40 : x - 100 < 0 ? 0 : x - 100, isSnapshots ? y - 40 < 0 ? 0 : y - 40 : y - 60 < 0 ? 0 : y - 60, widthInt, heightInt);
//将截取的子图另行存储
Image _img = pic2.getScaledInstance(widthInt, heightInt, Image.SCALE_AREA_AVERAGING);
BufferedImage image = new BufferedImage(widthInt, heightInt, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = image.createGraphics();
graphics.drawImage(_img, 0, 0, null);
graphics.dispose();
OutputStream out = new FileOutputStream(outPic);
ImageIO.write(pic2, "png", out);
out.close();
} catch (IOException e) {
System.out.println("截取图片发生异常:" + e.getMessage());
e.printStackTrace();
}
}
Java以点击坐标为中心在大图上截取期待规格大小的图片
最新推荐文章于 2024-07-13 03:17:47 发布
文章详细描述了使用Java代码根据用户点击坐标截取并保存图片的函数,涉及文件操作、BufferedImage和ImageIO处理,以及异常捕获。
摘要由CSDN通过智能技术生成