从 JavaDoc 的PlanarImage.getData()
:
返回的 Raster 在语义上是一个副本。
这意味着对于图像的每个像素,您都在内存中创建整个图像的副本......这不能提供良好的性能。
使用getTile(x, y)
orgetTiles()
应该更快。
尝试:
PlanarImage image;
final int tilesX = image.getNumXTiles();
final int tilesY = image.getNumYTiles();
int[] arr = null;
for (int ty = image.getMinTileY(); ty < tilesY; ty++) {
for (int tx = startX; tx < image.getMinTileX(); tx++) {
Raster tile = image.getTile(tx, ty);
final int w = tile.getWidth();
final int h = tile.getHeight();
for (int y = tile.getMinY(); y < h; y++) {
for (int x = tile.getMinX(); x < w; x++) {
arr = tile.getPixel(x, y, arr);
// do stuff with arr
}
}
}
}