/*
*
* double scaleWidth 宽度比例
* double scaleHeight 高度比例
*
* */
@Test
public void test1() throws IOException {
File input = new File("D:\\图片\\1.png");
// 保存剪裁后的图片
File output = new File("D:\\图片\\666.jpg");
cutScale(input, output, 5, 3);
}
/*
*
* int width 宽度像素
* int height 高度像素
*
* */
@Test
public void test2() throws IOException {
File input = new File("D:\\图片\\1.png");
// 保存剪裁后的图片
File output = new File("D:\\图片\\888.jpg");
cutPixel(input, output, 910, 840);
}
public static void cutScale(File input, File output, double scaleWidth, double scaleHeight) throws IOException {
BufferedImage image = ImageIO.read(input);
int width = image.getWidth();
int height = image.getHeight();
//计算剪裁后的宽度和高度
int newwidth = width;
int newHeight = (int) Math.round(scaleHeight / scaleWidth * width);
if (newHeight > height) {
newwidth = (int) Math.round(scaleWidth / scaleHeight * height);
newHeight = height;
}
//计算剪裁的起始坐标
int x = (width - newwidth) / 2;
int y = (height - newHeight) / 2;
//剪裁图片
BufferedImage cropped = image.getSubimage(x, y, newwidth, newHeight);
ImageIO.write(cropped, "jpg", output);
}
public static void cutPixel(File input, File output, int width, int height) throws IOException {
BufferedImage image = ImageIO.read(input);
// 调整图片大小
BufferedImage resized = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = resized.createGraphics();
g.drawImage(image, 0, 0, width, height, null);
g.dispose();
ImageIO.write(resized, "jpg", output);
}
Java图片按比例裁剪,按指定像素裁剪
于 2023-03-24 15:16:50 首次发布