/** * A faster convert that works directly with a specific raster */ public static void bufferedToGray(SunWritableRaster src, GrayF32 dst) { if( src.getDataBuffer().getDataType() != DataBuffer.TYPE_BYTE ) throw new RuntimeException("Unsupported type"); DataBufferByte byteBuffer = (DataBufferByte)src.getDataBuffer(); byte[] srcData = byteBuffer.getData(); float[] dstData = dst.data; int numBands = src.getNumBands(); int srcOffset = 0; int srcStrideDiff = 0; if (numBands == 3) { from_3BU8_to_F32(dst, srcData, dstData, srcOffset, srcStrideDiff); } else if (numBands == 1) { from_1BU8_to_F32(dst, srcData, dstData, srcOffset, srcStrideDiff); } else if (numBands == 4) { from_4BU8_to_F32(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, GrayF32 dst) { byte[] srcData = src.getDataStorage(); float[] data = dst.data; int numBands = src.getNumBands(); int srcStride = src.getScanlineStride(); int srcOffset = getOffset(src); int srcStrideDiff = srcStride-src.getPixelStride()*dst.width; if (numBands == 3) { from_3BU8_to_F32(dst, srcData, data, srcOffset, srcStrideDiff); } else if (numBands == 1) { from_1BU8_to_F32(dst, srcData, data, srcStride, srcOffset); } else if (numBands == 4) { from_4BU8_to_F32(dst, srcData, data, srcOffset, srcStrideDiff); } else { throw new RuntimeException("Write more code here."); } }