@Override public RenderedImage createImage(int level) { PlanarImage image; try { image = TiledFileOpImage.create(new File(imageDir, level + ""), imageProperties); } catch (IOException e) { throw new RuntimeException(e); } return image; }
/** * Computes a tile. Since the operation has no sources, * there is no need to worry about cobbling. * <p/> * <p> Subclasses should implement the * <code>computeRect(PlanarImage[], WritableRaster, Rectangle)</code> * method to perform the actual computation. * * @param tileX The X index of the tile. * @param tileY The Y index of the tile. */ @Override public Raster computeTile(int tileX, int tileY) { // System.out.println("TiledFileOpImage.computeTile: >> '" + getTileFilename(tileX, tileY) + "'..."); final Point location = new Point(tileXToX(tileX), tileYToY(tileY)); final Raster raster; if (imageHeader.getTileFormat().startsWith("raw")) { final WritableRaster targetRaster = createWritableRaster(sampleModel, location); try { readRawDataTile(tileX, tileY, targetRaster); } catch (IOException e) { throw new RuntimeException("Failed to read image tile.", e); } raster = targetRaster; } else { raster = readImageTile(tileX, tileY, location); } // System.out.println("TiledFileOpImage.computeTile: << '" + getTileFilename(tileX, tileY) + "'"); return raster; }
private String getTileFilename(int tileX, int tileY) { return getTileBasename(tileX, tileY) + "." + imageHeader.getTileFormat(); }
private TiledFileOpImage(ImageHeader imageHeader, Map configuration, VirtualDir imageDir) throws IOException { super(imageHeader.getImageLayout(), configuration, imageHeader.getImageLayout().getSampleModel(null), imageHeader.getImageLayout().getMinX(null), imageHeader.getImageLayout().getMinY(null), imageHeader.getImageLayout().getWidth(null), imageHeader.getImageLayout().getHeight(null)); this.imageDir = imageDir; this.imageHeader = imageHeader; if (this.imageHeader.getTileFormat().equalsIgnoreCase("raw.zip")) { inputStreamFactory = new RawZipImageInputStreamFactory(); } else if (this.imageHeader.getTileFormat().equalsIgnoreCase("raw")) { inputStreamFactory = new RawImageInputStreamFactory(); } else if (this.imageHeader.getTileFormat().equalsIgnoreCase("zip")) { inputStreamFactory = new ZipInputStreamFactory(); } if (getTileCache() == null) { setTileCache(JAI.getDefaultInstance().getTileCache()); } }
final Object dataObject = getDataObject(raster); if (dataObject instanceof byte[]) { final byte[] data = (byte[]) dataObject;
private void readRawDataTile(int tileX, int tileY, WritableRaster targetRaster) throws IOException { final ImageInputStream imageInputStream = inputStreamFactory.createImageInputStream(tileX, tileY); try { readRawDataTile(imageInputStream, targetRaster); } finally { imageInputStream.close(); } }
public static TiledFileOpImage create(File imageDir, Properties defaultImageProperties) throws IOException { final VirtualDir dir = VirtualDir.create(imageDir); File file = new File(dir.getBasePath()); final ImageHeader imageHeader = ImageHeader.load(file, defaultImageProperties); return new TiledFileOpImage(imageHeader, null, dir); }
private Raster readImageTile(int tileX, int tileY, Point location) { File imageFile = new File(imageDir.getBasePath(), getTileFilename(tileX, tileY)); final RenderedOp renderedOp = FileLoadDescriptor.create(imageFile.getPath(), null, true, null); final Raster data = renderedOp.getData(); return WritableRaster.createRaster(data.getSampleModel(), data.getDataBuffer(), location); }
final Object dataObject = getDataObject(raster); if (dataObject instanceof byte[]) { byte[] data = (byte[]) dataObject;
public static TiledFileOpImage create(VirtualDir imageDir, Properties defaultImageProperties) throws IOException { return create(new File(imageDir.getBasePath()), defaultImageProperties); }
image0 = TiledFileOpImage.create(imageFile, new Properties()); } else {