尝试从单个图像中获取多个图像

时间:2019-10-05 13:38:37

标签: java bufferedimage

最近我一直被困在某个地方。 我要做的是从1个大图像中获取多个子图像。

所以举这个例子。我有一个128x128像素的帧,其中需要所有图像。 我将所有bufferedImages放入列表中,并将所有这些图像缩放到128x128。

您在该链接上看到的图像显示,我需要该图像中的4个子图像,因此,最后,我有4个图像,它们的分辨率为128x128,但是4倍。 或者,如果您的图片分辨率为128x384,则它将给出3个子图像,从上到下。

https://i.stack.imgur.com/RsCkf.png

我知道有一个叫做

的函数
BufferedImage.getSubimage(int x, int y, int w, int h);

但是问题是我无法弄清楚我需要实现什么数学。 我试过的是,如果高度或宽度大于200,然后将其除以2,但这对我没用。

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的要求,但是我认为您想要的是这样的:

首先,在两个维度上循环遍历图像。

然后计算图块的大小(较小的值128和(图像尺寸-起始位置)。这是为了确保您不会试图获取图块。如果您的图片在任何尺寸上始终都是128的倍数,则可以跳过此步骤而只使用128(只需确保您确认输入的图片符合此假设)即可。

如果您只需要128x128的图块,也可以跳过其余部分,如果图块小于128x128,则不确定您的要求是什么。无论如何,我会留给你。 :-)

最后,获取具有该大小和坐标的子图像,并将其存储在列表中。

代码:

const char*