List of usage examples for java.awt.image Raster createChild
public Raster createChild(int parentX, int parentY, int width, int height, int childMinX, int childMinY, int[] bandList)
From source file:org.esa.s2tbx.dataio.jp2.internal.JP2TileOpImage.java
private void computeRectDirect(WritableRaster dest, Rectangle destRect) { try (OpenJP2Decoder decoder = new OpenJP2Decoder(this.cacheDir, this.imageFile, this.bandIndex, this.dataType, getLevel(), 20, tileIndex)) { Raster readTileImage = null; final DataBuffer dataBuffer = dest.getDataBuffer(); int tileWidth = this.getTileWidth(); int tileHeight = this.getTileHeight(); final int fileTileX = destRect.x / tileLayout.tileWidth; final int fileTileY = destRect.y / tileLayout.tileHeight; int fileTileOriginX = destRect.x - fileTileX * tileLayout.tileWidth; int fileTileOriginY = destRect.y - fileTileY * tileLayout.tileHeight; Dimension dimensions = decoder.getImageDimensions(); Rectangle fileTileRect = new Rectangle(0, 0, dimensions.width, dimensions.height); if (fileTileOriginX == 0 && tileLayout.tileWidth == tileWidth && fileTileOriginY == 0 && tileLayout.tileHeight == tileHeight && tileWidth * tileHeight == dataBuffer.getSize()) { readTileImage = decoder.read(null); } else {//from w w w . ja v a 2 s. c om final Rectangle tileRect = new Rectangle(fileTileOriginX, fileTileOriginY, tileWidth, tileHeight); final Rectangle intersection = fileTileRect.intersection(tileRect); if (!intersection.isEmpty()) { readTileImage = decoder.read(intersection); } } if (readTileImage != null) { Raster readBandRaster = readTileImage.createChild(0, 0, readTileImage.getWidth(), readTileImage.getHeight(), 0, 0, bands); dest.setDataElements(dest.getMinX(), dest.getMinY(), readBandRaster); } } catch (IOException e) { logger.severe(e.getMessage()); } }