我们试图仅从捕获的图像中获取图像的一部分。但是在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[][])
答案 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复合颜色绘制图像以覆盖您不想看到的区域。或者创建一个矩形子图像网格,并保留你想要显示的网格。