public PixelData getHypercube(List<Integer> offset, List<Integer> size, List<Integer> step) throws IOException, DimensionsOutOfBoundsException { final BfPixelsWrapper reader = reader(); PixelData d; int hypercubeSize = RomioPixelBuffer.safeLongToInteger( getHypercubeSize(offset,size,step)); byte[] buffer = new byte[hypercubeSize]; reader.getHypercube(offset,size,step,buffer); d = new PixelData(reader.getPixelsType(), ByteBuffer.wrap(buffer)); d.setOrder(isLittleEndian()? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); return d; }