public static ImageHeader load(Properties imageProperties, File imageDir) throws IOException { int dataType = Integer.parseInt(imageProperties.getProperty("dataType")); int minX = Integer.parseInt(imageProperties.getProperty("minX", "0")); int minY = Integer.parseInt(imageProperties.getProperty("minY", "0")); int width = Integer.parseInt(imageProperties.getProperty("width")); int height = Integer.parseInt(imageProperties.getProperty("height")); int tileGridXOffset = Integer.parseInt(imageProperties.getProperty("tileGridXOffset", "0")); int tileGridYOffset = Integer.parseInt(imageProperties.getProperty("tileGridYOffset", "0")); int tileWidth = Integer.parseInt(imageProperties.getProperty("tileWidth")); int tileHeight = Integer.parseInt(imageProperties.getProperty("tileHeight")); int numberOfBits = Integer.parseInt(imageProperties.getProperty("numberOfBits", "0")); String tileFormat = imageProperties.getProperty("tileFormat", "raw.zip"); SampleModel sampleModel; ColorModel colorModel; if (tileFormat.startsWith("raw")) { if (numberOfBits == 1 || numberOfBits == 2 || numberOfBits == 4) { sampleModel = new MultiPixelPackedSampleModel(dataType, tileWidth, tileHeight, numberOfBits); } else { sampleModel = ImageUtils.createSingleBandedSampleModel(dataType, tileWidth, tileHeight); } colorModel = null; } else { RenderedOp tile00 = FileLoadDescriptor.create( new File(imageDir, "0-0." + tileFormat).getPath(), null, true, null); sampleModel = tile00.getSampleModel().createCompatibleSampleModel(tileWidth, tileHeight); colorModel = tile00.getColorModel(); } ImageLayout imageLayout = new ImageLayout( minX, minY, width, height, tileGridXOffset, tileGridYOffset, tileWidth, tileHeight, sampleModel, colorModel); return new ImageHeader(imageLayout, tileFormat); }