private static ImageLayout createImageLayout(RenderedImage sourceImage, Number fillValue) { int targetDataType = Math.max(sourceImage.getSampleModel().getDataType(), DataBufferUtils.getDataBufferType(fillValue)); SingleBandedSampleModel sampleModel = new SingleBandedSampleModel(targetDataType, sourceImage.getTileWidth(), sourceImage.getTileHeight()); return new ImageLayout(sourceImage).setSampleModel(sampleModel); }