【问题标题】:How can I crop an image with negative crop-boundaries in Java?如何在 Java 中裁剪具有负裁剪边界的图像?
【发布时间】:2012-09-17 12:11:25
【问题描述】:

我有一个任意大小的图像,我需要用负边界值裁剪它。

所以,基本上我有图像 (1),我想将其裁剪为 (2) 的尺寸。

(1) +---------------+ (2) | | +------------------------------+ | | | | | | | | | | | | | | | | | +------------------------------+ | | | +---------------+

关于如何在 Java 中解决这个问题的任何想法?

我尝试了Scalr 库,但它不支持负裁剪边界。

【问题讨论】:

  • 您希望生成的图像具有 (2) 的大小还是 (1) 和 (2) 的交集的大小?
  • @Baz 后者。我希望生成的图像具有 (1) 和 (2) 的交集的大小。感谢您的澄清。
  • 那么,您可以轻松地将 (2) 的坐标/边界转换为非负数,然后再对其进行裁剪。或者只是接受丹的回答。

标签: java image image-processing crop


【解决方案1】:

此任务不需要库。

您可以通过这种方式创建新图像:

BufferedImage newImage = new BufferedImage(width, height, imageType);

然后您可以通过这种方式从旧图像中裁剪出您需要的部分:

BufferedImage tempImage = oldImage.getSubimage(0, y, otherWidth, height);

然后,将tempImage 放入newImage

Graphics2D g2 = newImage.createGraphics();
g2.drawImage(tempImage, x, 0, otherWidth, height, null);
g2.dispose();
  • width 是 image1 的宽度
  • height 是 image1 的宽度
  • x 是 x 轴上 2 个图像之间的顶部交点
  • y 是 y 轴上 2 个图像之间的顶部交点
  • otherWidthwidth - x

【讨论】:

  • 非常感谢您的回答。我已将这些步骤按次要顺序并在此处粘贴了一个完整的示例pastie.org/4790687,因为您的变量名称(例如 otherWidth)没有明确您所指的值。
【解决方案2】:

您不能将图像放在一个 div 集内以显示为具有设定高度和宽度的块,然后将图像放置在包含 div 的右侧吗?

【讨论】:

  • 不,我不能,或者说这不能解决我的问题。我专门询问如何编辑图像本身。不适用于在网站上显示图像的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多