部分图像呈矩形

时间:2014-10-01 21:36:04

标签: java image

我们试图仅从捕获的图像中获取图像的一部分。但是在java中我们只使用image.getImage(x,y,width,height)获得矩形形式的子图像。如果我将图像分成10个部分,如下所示。如何能够仅使用原生java在第二个图像中显示1,2,4,6,8,9,10,而不会消耗太多资源和时间。

enter image description here

enter image description here

更新

以下是示例代码

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[][])

2 个答案:

答案 0 :(得分:0)

如果这些矩形的大小相同,您可以将图像视为网格,并通过一些数学计算您需要的图像区域。

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());

然后将每个子区域渲染到内存中的新图像。

答案 1 :(得分:0)

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