gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:43:39 26 4
gpt4 key购买 nike

我最近被一些事情困住了。我想要做的是从一张大图像中获取多个子图像。

就拿这个例子来说吧。我有一个 128x128 像素的框架,所有图像都需要在其中。我将所有 bufferedImages 放入一个列表中,并将所有这些图像缩放到 128x128。

您在该链接上看到的图像显示我需要该图像的 4 个子图像,因此最后,我有 4 个图像,尺寸为 128x128,但为 4 倍。或者,如果您有一个 128x384 的图像,它将提供从上到下的 3 个子图像。

/image/RsCkf.png

我知道有一个函数叫做

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

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

最佳答案

我不确定我完全理解你在问什么,但我认为你想要的是这样的:

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

然后计算图 block 的大小(128 和(图像尺寸 - 起始位置)中较小的值)。这是为了确保您不会尝试越界获取图 block 。如果您的图像在任何维度上始终是 128 的倍数,您可以跳过此步骤并仅使用 128(只需确保您验证输入图像遵循此假设)。

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

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

代码:

BufferedImage image = ...;
int tileSize = 128;
List<BufferedImage> tiles = new ArrayList<>();

for (int y = 0; y < image.height(); y += tileSize) {
int h = Math.min(tileSize, image.height() - y);

for (int x = 0; x < image.width(); x += tileSize) {
int w = Math.min(tileSize, image.width() - x);
tiles .add(image.getSubimage(x, y, w, h));
}
}

关于java - 尝试从单个图像中获取多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com