diff --git a/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java index c226a72f176d5a95500ebadcfb940a80073d93c3..e6f310c1a3858a66820e38d70641d3e7a971a0a4 100644 --- a/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java @@ -130,6 +130,28 @@ public final class RawDataLoader extends BasicLoader implements IPlaneLoader { return values; } + public int[][] loadAllPlanesTo2DArray() throws IOException { + final V3i imageDims = inputDataInfo.getDimensions(); + final int planePixelCount = imageDims.getX() * imageDims.getY(); + final int planeDataSize = planePixelCount * 2; + final int[][] result = new int[imageDims.getZ()][]; + + final byte[] planeBuffer = new byte[planeDataSize]; + try (final FileInputStream fileStream = new FileInputStream(inputDataInfo.getFilePath())) { + + for (int plane = 0; plane < imageDims.getZ(); plane++) { + int toRead = planeDataSize; + while (toRead > 0) { + final int read = fileStream.read(planeBuffer, planeDataSize - toRead, toRead); + assert (read > 0); + toRead -= read; + } + result[plane] = TypeConverter.unsignedShortBytesToIntArray(planeBuffer); + } + } + return result; + } + @Override public int[][] loadRowVectors(final int vectorSize, final Range<Integer> planeRange) throws IOException { return loadRowVectorsImplByLoadPlaneData(vectorSize, planeRange); @@ -144,4 +166,6 @@ public final class RawDataLoader extends BasicLoader implements IPlaneLoader { public int[][] loadVoxels(final V3i voxelDim, final Range<Integer> planeRange) throws IOException { return loadVoxelsImplByLoadPlaneData(voxelDim, planeRange); } + + }