static long getBufferSizeCSM(ComponentSampleModel csm) { int[] bandOffsets = csm.getBandOffsets(); int maxBandOff = bandOffsets[0]; for (int i = 1; i < bandOffsets.length; i++) maxBandOff = Math.max(maxBandOff, bandOffsets[i]); long size = 0; if (maxBandOff >= 0) size += maxBandOff + 1; int pixelStride = csm.getPixelStride(); if (pixelStride > 0) size += pixelStride * (csm.getWidth() - 1); int scanlineStride = csm.getScanlineStride(); if (scanlineStride > 0) size += scanlineStride * (csm.getHeight() - 1); return size; }
private static long getBufferSizeCSM(ComponentSampleModel csm) { int[] bandOffsets = csm.getBandOffsets(); int maxBandOff = bandOffsets[0]; for (int i = 1; i < bandOffsets.length; i++) maxBandOff = Math.max(maxBandOff, bandOffsets[i]); long size = 0; if (maxBandOff >= 0) size += maxBandOff + 1; int pixelStride = csm.getPixelStride(); if (pixelStride > 0) size += pixelStride * (csm.getWidth() - 1); int scanlineStride = csm.getScanlineStride(); if (scanlineStride > 0) size += scanlineStride * (csm.getHeight() - 1); return size; }
private void lookup(ComponentSampleModel sm, byte[] src, ComponentSampleModel destsm, short[] dest) { int w = sm.getWidth(); int h = sm.getHeight(); int stride = sm.getScanlineStride(); int destStride = destsm.getScanlineStride(); for (int y = 0; y < h; y++) lookup(src, y * stride, dest, y * destStride, w); }
private void lookup(ComponentSampleModel sm, byte[] src, ComponentSampleModel destsm, byte[] dest) { int w = sm.getWidth(); int h = sm.getHeight(); int stride = sm.getScanlineStride(); int destStride = destsm.getScanlineStride(); for (int y = 0; y < h; y++) lookup(src, y * stride, dest, y * destStride, w); }
private void lookup(ComponentSampleModel sm, short[] src, ComponentSampleModel destsm, byte[] dest) { int w = sm.getWidth(); int h = sm.getHeight(); int stride = sm.getScanlineStride(); int destStride = destsm.getScanlineStride(); for (int y = 0; y < h; y++) lookup(src, y * stride, dest, y * destStride, w); }
private void lookup(ComponentSampleModel sm, short[] src, ComponentSampleModel destsm, byte[] dest) { int w = sm.getWidth(); int h = sm.getHeight(); int stride = sm.getScanlineStride(); int destStride = destsm.getScanlineStride(); for (int y = 0; y < h; y++) lookup(src, y * stride, dest, y * destStride, w); }
private void lookup(ComponentSampleModel sm, byte[] src, ComponentSampleModel destsm, byte[] dest) { int w = sm.getWidth(); int h = sm.getHeight(); int stride = sm.getScanlineStride(); int destStride = destsm.getScanlineStride(); for (int y = 0; y < h; y++) lookup(src, y * stride, dest, y * destStride, w); }
private int maxDiff(ComponentSampleModel csm, short[] data, ComponentSampleModel csm2, short[] data2) { int w = csm.getWidth() * csm.getPixelStride(); int h = csm.getHeight(); int stride = csm.getScanlineStride(); int stride2 = csm2.getScanlineStride(); int diff, maxDiff = 0; for (int y = 0; y < h; y++) { for (int j = w, i = y * stride, i2 = y * stride2; j-- > 0; i++, i2++) { if (maxDiff < (diff = Math.abs(data[i] - data2[i2]))) maxDiff = diff; } } return maxDiff; }
private void lookup(ComponentSampleModel sm, byte[] src, ComponentSampleModel destsm, short[] dest) { int w = sm.getWidth(); int h = sm.getHeight(); int stride = sm.getScanlineStride(); int destStride = destsm.getScanlineStride(); for (int y = 0; y < h; y++) lookup(src, y * stride, dest, y * destStride, w); }
private int maxDiff(ComponentSampleModel csm, short[] data, ComponentSampleModel csm2, short[] data2) { int w = csm.getWidth() * csm.getPixelStride(); int h = csm.getHeight(); int stride = csm.getScanlineStride(); int stride2 = csm2.getScanlineStride(); int diff, maxDiff = 0; for (int y = 0; y < h; y++) { for (int j = w, i = y * stride, i2 = y * stride2; j-- > 0; i++, i2++) { if (maxDiff < (diff = Math.abs(data[i] - data2[i2]))) maxDiff = diff; } } return maxDiff; }
/** * Define the weight of a {@link java.awt.image.Raster}. * * @param raster raster which will be weigh. * @return raster weight. */ private long getRasterWeight(final Raster raster) { final SampleModel rsm = raster.getSampleModel(); final int width = (rsm instanceof ComponentSampleModel) ? ((ComponentSampleModel) rsm).getScanlineStride() : raster.getWidth()*rsm.getNumDataElements(); return width * raster.getHeight() * dataTypeWeight; }
public abstract void lookup(byte[] src, int srcPost, byte[] dest, int destPos, int length);
public abstract void lookup(byte[] src, int srcPost, byte[] dest, int destPos, int length);
private static void writeTo(SampleModel sm, short[] data, OutputStream out) throws IOException { int h = sm.getHeight(); int w = sm.getWidth(); int stride = ((ComponentSampleModel) sm).getScanlineStride(); byte[] b = new byte[w * 2]; for (int y = 0; y < h; ++y) { for (int i = 0, j = y * stride; i < b.length;) { short s = data[j++]; b[i++] = (byte) s; b[i++] = (byte) (s >> 8); } out.write(b); } }
private void write(SampleModel sm, short[] data) throws IOException { int h = sm.getHeight(); int w = sm.getWidth(); int stride = ((ComponentSampleModel) sm).getScanlineStride(); byte[] b = new byte[w * 2]; for (int y = 0; y < h; ++y) { for (int i = 0, j = y * stride; i < b.length;) { short s = data[j++]; b[i++] = (byte) s; b[i++] = (byte) (s >> 8); } dos.write(b); } }
private int[] calcMinMax(StoredValue storedValue, ComponentSampleModel sm, short[] data) { int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; int w = sm.getWidth(); int h = sm.getHeight(); int stride = sm.getScanlineStride(); for (int y = 0; y < h; y++) for (int i = y * stride, end = i + w; i < end;) { int val = storedValue.valueOf(data[i++]); if (val < min) min = val; if (val > max) max = val; } return new int[] { min, max }; }
/** * Gets the scanline stride for the given raster * * @param raster * @return */ int getScanlineStride(Raster raster) { if (raster.getSampleModel() instanceof ComponentSampleModel) { ComponentSampleModel csm = ((ComponentSampleModel) raster.getSampleModel()); return csm.getScanlineStride(); } else { return raster.getDataBuffer().getSize() / raster.getHeight(); } }
private int[] calcMinMax(StoredValue storedValue, ComponentSampleModel sm, byte[] data) { int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; int w = sm.getWidth(); int h = sm.getHeight(); int stride = sm.getScanlineStride(); for (int y = 0; y < h; y++) for (int i = y * stride, end = i + w; i < end;) { int val = storedValue.valueOf(data[i++]); if (val < min) min = val; if (val > max) max = val; } return new int[] { min, max }; }
private static void writeTo(SampleModel sm, byte[][] bankData, OutputStream out) throws IOException { int h = sm.getHeight(); int w = sm.getWidth(); ComponentSampleModel csm = (ComponentSampleModel) sm; int len = w * csm.getPixelStride(); int stride = csm.getScanlineStride(); if (csm.getBandOffsets()[0] != 0) bgr2rgb(bankData[0]); for (byte[] b : bankData) for (int y = 0, off = 0; y < h; ++y, off += stride) out.write(b, off, len); }
private void write(SampleModel sm, byte[][] bankData) throws IOException { int h = sm.getHeight(); int w = sm.getWidth(); ComponentSampleModel csm = (ComponentSampleModel) sm; int len = w * csm.getPixelStride(); int stride = csm.getScanlineStride(); if (csm.getBandOffsets()[0] != 0) bgr2rgb(bankData[0]); for (byte[] b : bankData) for (int y = 0, off = 0; y < h; ++y, off += stride) dos.write(b, off, len); }