Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 部分图像呈矩形_Java_Image - Fatal编程技术网

Java 部分图像呈矩形

Java 部分图像呈矩形,java,image,Java,Image,我们正试图从捕获的图像中仅获取图像的一部分。但在java中,我们只使用image.getImage(x,y,width,height)获得矩形形式的子图像。假设我将图像分割为10个部分,如下所示。如何使用本机java仅从中提取1,2,4,6,8,9,10,而不消耗太多资源和时间,如第二张图片所示 更新 下面是示例代码 for (int x = 0; x < columns; x++) { for (int y = 0; y < rows; y++) { i

我们正试图从捕获的图像中仅获取图像的一部分。但在java中,我们只使用image.getImage(x,y,width,height)获得矩形形式的子图像。假设我将图像分割为10个部分,如下所示。如何使用本机java仅从中提取1,2,4,6,8,9,10,而不消耗太多资源和时间,如第二张图片所示

更新 下面是示例代码

for (int x = 0; x < columns; x++) {
    for (int y = 0; y < rows; y++) {
        imagePart = img.getSubimage(x * this.smallWidth, y
                            * this.smallHeight, this.smallWidth,
                            this.smallHeight);

                        if (!ifSelectedPart(imagePart)) {
                            smallImages[x][y] = imagePart;


                        }
                    else {
                        smallImages[x][y] = fillwithAlpha();

                    }

   }

createImage(smallImages[][])
for(int x=0;x
如果这些矩形的大小都相同,您可以将图像视为网格,并通过一点数学计算出您需要的图像区域

int numberColumns = 2;
int numberRows = 5;

public Rectangle getSubregion(int row, int column, int imgWidth, int imgHeight){
    int cellWidth = imgWidth / numberColumns;
    int cellHeight = imgHeight / numberRows;
    return new Rectangle(column*cellWidth, row*cellHeight,cellWidth, cellHeight);
}

//usage
Rectangle cellOne = getSubregion(0, 0, img.getWidth(),img.getHeight());

然后,只需将这些子区域渲染到内存中的新图像。

图像本质上是矩形的。也许您希望使用0 alpha合成颜色在图像上绘制,以覆盖不希望看到的区域。或者创建一个矩形子图像网格,并保留要显示的网格中的图像.

给我们看看你的一些代码。这只会得到矩形的形状,而不是我需要的形状。如果你需要图像的非矩形区域,请计算非矩形区域的边界矩形,然后将非矩形区域设置为剪辑,并使用该剪辑渲染边界矩形。如果需要,请告诉我澄清一下,这绝对是你想要的方式。我喜欢这个想法。这包括使用graphic2d创建图像吗?你能重写你的函数吗?你能以编程方式显示吗?特别是如何填充alpha@user1595858:如果你发布了你的第一篇文章,我将尝试修改它。刚刚用示例程序更新。我需要fillwithAlpha()的代码你已经发布了一个代码片段,不是A。我无法编译、运行或测试一个片段。请看一下这里提供的链接和我以前的评论,如果你仍然需要帮助,考虑一下它。是的,这需要你的努力,但这是你的问题,所以这是公平的。我只需要功能。n将像素修改为alpha,虽然我可以更新最小的示例,但需要一段时间