/** * A faster convert that works directly with a specific raster */ public static void bufferedToGray(SunWritableRaster src, GrayU8 dst) { if( src.getDataBuffer().getDataType() != DataBuffer.TYPE_BYTE ) throw new RuntimeException("Unsupported type"); DataBufferByte byteBuffer = (DataBufferByte)src.getDataBuffer(); byte[] srcData = byteBuffer.getData(); byte[] dstData = dst.data; int numBands = src.getNumBands(); int srcStride = src.getWidth()*numBands; int srcOffset = 0; int srcStrideDiff = 0; int size = dst.getWidth() * dst.getHeight(); if (numBands == 3) { from_3BU8_to_U8(dst, srcData, dstData, srcOffset, srcStrideDiff); } else if (numBands == 1) { from_1BU8_to_U8(dst, srcData, dstData, size, srcStride, srcOffset, srcStrideDiff); } else if (numBands == 4) { from_4BU8_to_U8(dst, srcData, dstData, srcOffset, srcStrideDiff); } else { throw new RuntimeException("Unexpected number of bands found. Bands = "+numBands); } }
/** * A faster convert that works directly with a specific raster */ public static void bufferedToGray(ByteInterleavedRaster src, GrayU8 dst) { byte[] srcData = src.getDataStorage(); byte[] data = dst.data; int numBands = src.getNumBands(); int size = dst.getWidth() * dst.getHeight(); int srcStride = src.getScanlineStride(); int srcOffset = getOffset(src); int srcStrideDiff = srcStride-src.getPixelStride()*dst.width; if (numBands == 3) { from_3BU8_to_U8(dst, srcData, data, srcOffset, srcStrideDiff); } else if (numBands == 1) { from_1BU8_to_U8(dst, srcData, data, size, srcStride, srcOffset, srcStrideDiff); } else if (numBands == 4) { from_4BU8_to_U8(dst, srcData, data, srcOffset, srcStrideDiff); } else { throw new RuntimeException("Unexpected number of bands found. Bands = "+numBands); } }