在Java中裁剪图像

6

我正在尝试在Java中剪切图像的特定部分并将其保存回磁盘。是否有一种函数可以从指定的X、Y剪切图像,并具有指定的宽度和高度?


你尝试在你最喜欢的搜索引擎或者Stackoverflow搜索框中输入“Java图片裁剪”了吗? - Jean-François Corbett
1
为什么这个问题被关闭为“过于广泛”?甚至已经有一个清晰简明的答案发布了! - aioobe
1个回答

23

通常你需要:

  1. 创建一个新的 BufferedImage(下面使用dst)并指定所需的宽度和高度。
  2. 获取其 Graphics 对象。
  3. 加载原始JPEG图像(下面使用src)。
  4. 将所需部分绘制到 BufferedImage 上。
  5. 使用 ImageIO 将缓冲图像写入文件。

代码如下:

Image src = ImageIO.read(new File("duke.jpg"));

int x = 10, y = 20, w = 40, h = 50;

BufferedImage dst = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
dst.getGraphics().drawImage(src, 0, 0, w, h, x, y, x + w, y + h, null);

ImageIO.write(dst, "png", new File("duke_cropped.png"));

给定这个 .jpg 文件...

图片描述

...它会生成这个 .png 文件:

图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接