/** * Computes the size of a grid coverage in bytes given its grid envelope and the target sample * model * * @param envelope * @param sm */ static long getCoverageSize(GridEnvelope2D envelope, SampleModel sm) { // === compute the coverage memory usage and compare with limit final long pixelsNumber = computePixelsNumber(envelope); long pixelSize = 0; final int numBands = sm.getNumBands(); for (int i = 0; i < numBands; i++) { pixelSize += sm.getSampleSize(i); } return pixelsNumber * pixelSize / 8; }
final SampleModel sm = image.getSampleModel(); for (int band : indexes) { pixelSize += sm.getSampleSize(band);
private int computePixelSize(final SampleModel sampleModel) { int size = 0; for (int i = 0; i < sampleModel.getNumBands(); i++) { size += sampleModel.getSampleSize(i); } return size; }
/** * Returns {@code true} if the {@linkplain #image} stores its pixel values in 8 bits. * * @see #rescaleToBytes */ public final boolean isBytes() { final SampleModel sm = image.getSampleModel(); final int[] sampleSize = sm.getSampleSize(); for (int i = 0; i < sampleSize.length; i++) if (sampleSize[i] != 8) return false; return true; }
/** * Check if the image is fail safe for color based features that are actually using 8 bits per pixel RGB. * * @param bufferedImage * @return */ public static BufferedImage get8BitRGBImage(BufferedImage bufferedImage) { // check if it's (i) RGB and (ii) 8 bits per pixel. if (bufferedImage.getType() != BufferedImage.TYPE_INT_RGB || bufferedImage.getSampleModel().getSampleSize(0) != 8) { BufferedImage img = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB); img.getGraphics().drawImage(bufferedImage, 0, 0, null); bufferedImage = img; } return bufferedImage; }
/** * Check if the image is fail safe for color based features that are actually using 8 bits per pixel RGB. * * @param bufferedImage * @return */ public static BufferedImage get8BitRGBImage(BufferedImage bufferedImage) { // check if it's (i) RGB and (ii) 8 bits per pixel. if (bufferedImage.getType() != BufferedImage.TYPE_INT_RGB || bufferedImage.getSampleModel().getSampleSize(0) != 8) { BufferedImage img = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB); img.getGraphics().drawImage(bufferedImage, 0, 0, null); bufferedImage = img; } return bufferedImage; }
/** * Computes the image size based on the SampleModel and image dimension * * @param image * @return */ static long computeImageSize(RenderedImage image) { long bits = 0; final int bands = image.getSampleModel().getNumBands(); for (int i = 0; i < bands; i++) { bits += image.getSampleModel().getSampleSize(i); } return (long) Math.ceil(bits / 8) * image.getWidth() * image.getHeight(); }
/** Checks if the specified {@code SampleModel} is compatible with this {@code ColorModel}. */ public boolean isCompatibleSampleModel(final SampleModel sm) { return (sm instanceof ComponentSampleModel) && sm.getTransferType() == transferType && sm.getNumBands() == numBands && (1 << sm.getSampleSize(visibleBand)) >= getMapSize(); } }
@Override public final boolean isCompatibleRaster(final Raster raster) { int size = raster.getSampleModel().getSampleSize(0); return ((raster.getTransferType() == transferType) && (raster.getNumBands() == 2) && ((1 << size) >= icm.getMapSize())); }
case DataBuffer.TYPE_SHORT: switch (model.getSampleSize(band)) { case 1: return UNSIGNED_1BIT;
case TIFFExtension.COMPRESSION_CCITT_T4: case TIFFExtension.COMPRESSION_CCITT_T6: if (image.getSampleModel().getNumBands() != 1 || image.getSampleModel().getSampleSize(0) != 1) { throw new IllegalArgumentException("CCITT compressions supports 1 sample/pixel, 1 bit/sample only");
int firstSampleSize = firstSampleModel.getSampleSize()[0]; boolean hasIndexedColorModels = firstColorModel instanceof IndexColorModel; boolean hasComponentColorModels = firstColorModel instanceof ComponentColorModel; if (sourceSampleModel.getSampleSize(j) != firstSampleSize) { return false;
final int sampleSize = renderedImage.getSampleModel().getSampleSize(0); final int numBands = renderedImage.getSampleModel().getNumBands();
entries.put(TIFF.TAG_IMAGE_HEIGHT, new TIFFEntry(TIFF.TAG_IMAGE_HEIGHT, renderedImage.getHeight())); entries.put(TIFF.TAG_ORIENTATION, new TIFFEntry(TIFF.TAG_ORIENTATION, 1)); // (optional) entries.put(TIFF.TAG_BITS_PER_SAMPLE, new TIFFEntry(TIFF.TAG_BITS_PER_SAMPLE, asShortArray(sampleModel.getSampleSize()))); entries.put(TIFF.TAG_COLOR_MAP, new TIFFEntry(TIFF.TAG_COLOR_MAP, createColorMap((IndexColorModel) colorModel, sampleModel.getSampleSize(0)))); entries.put(TIFF.TAG_SAMPLES_PER_PIXEL, new TIFFEntry(TIFF.TAG_SAMPLES_PER_PIXEL, 1));
if (finalImage != null) { SampleModel sm = finalImage.getSampleModel(); final int sampleSize = sm.getSampleSize(0); ImageWorker iw = new ImageWorker(finalImage); if (sampleSize > 8 && asByte) {
assertEquals(expectedModel.getNumBands(), resultModel.getNumBands()); assertEquals(expectedModel.getNumDataElements(), resultModel.getNumDataElements()); assertTrue(Arrays.equals(expectedModel.getSampleSize(), resultModel.getSampleSize())); assertEquals(expectedModel.getTransferType(), resultModel.getTransferType()); for (int i = 0; i < expectedModel.getNumBands(); i++) { assertEquals(expectedModel.getSampleSize(i), resultModel.getSampleSize(i));
for (int i = 0; i < numDestinationBands; i++) bits[i] = sm.getSampleSize(i); final ComponentColorModel destinationColorModel = new ComponentColorModel(
assertEquals(type.getBitsPerBand(j), image.getSampleModel().getSampleSize(j));
@Override public final boolean isCompatibleRaster(final Raster raster) { int size = raster.getSampleModel().getSampleSize(0); return ((raster.getTransferType() == transferType) && (raster.getNumBands() == 2) && ((1 << size) >= icm.getMapSize())); }
@Override public boolean isCompatibleRaster(Raster raster) { if (getNumComponents() == 1 && getPixelSize() < 8) { SampleModel sm = raster.getSampleModel(); if (sm instanceof MultiPixelPackedSampleModel) { return (sm.getSampleSize(0) == getPixelSize()); } else { return false; } } return super.isCompatibleRaster(raster); }