@Override public int available() throws IOException { long remain = length() - getFilePointer(); if (remain > Integer.MAX_VALUE) remain = Integer.MAX_VALUE; return (int) remain; }
private void seekToNextMarker() throws IOException { while (in.getFilePointer() < in.length()) { String check = in.readString(3); if (check.equals(MARKER)) { in.skipBytes(1); return; } in.seek(in.getFilePointer() - 2); } }
@Override protected void initFile(String id) throws FormatException, IOException { super.initFile(id); in = new RandomAccessInputStream(id); CoreMetadata m = core.get(0); m.littleEndian = false; in.order(isLittleEndian()); m.sizeX = in.readShort(); m.sizeY = in.readShort(); m.sizeZ = in.readShort(); long fileLength = in.length() - HEADER_SIZE; int nBytes = (int) (fileLength / (getSizeX() * getSizeY() * getSizeZ())); m.pixelType = FormatTools.pixelTypeFromBytes(nBytes, false, false); m.sizeC = 1; m.sizeT = 1; m.rgb = false; m.dimensionOrder = "XYZCT"; m.imageCount = getSizeZ() * getSizeC() * getSizeT(); MetadataStore store = makeFilterMetadata(); MetadataTools.populatePixels(store, this); }
private int findNextOffset(RandomAccessInputStream s, byte[] marker) throws IOException { for (long i=s.getFilePointer(); i<s.length()-marker.length; i++) { s.seek(i); boolean found = true; for (int q=0; q<marker.length; q++) { if (marker[q] != s.readByte()) { found = false; break; } } if (found) return (int) (i + marker.length); } return -1; }
/** * @see loci.formats.IFormatReader#openBytes(int, byte[], int, int, int, int) */ @Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); if (getSeries() != lastSeries) { if (seriesStream != null) { seriesStream.close(); } seriesStream = new RandomAccessInputStream(pixelsFiles.get(getSeries())); lastSeries = getSeries(); } long offset = (long) no * FormatTools.getPlaneSize(this); if (offset < seriesStream.length()) { seriesStream.seek(offset); readPlane(seriesStream, x, y, w, h, buf); } return buf; }
/** Reads the contents of the given file into a string. */ public static String readFile(String id) throws IOException { RandomAccessInputStream in = new RandomAccessInputStream(id); long idLen = in.length(); if (idLen > Integer.MAX_VALUE) { throw new IOException("File too large"); } int len = (int) idLen; String data = in.readString(len); in.close(); return data; }
private void readSegments(String id) throws IOException { if (in != null) { in.close(); } in = new RandomAccessInputStream(id, BUFFER_SIZE); in.order(isLittleEndian()); while (in.getFilePointer() < in.length()) { Segment segment = readSegment(id); if (segment == null) { break; } segments.add(segment); if (segment instanceof SubBlock) { planes.add((SubBlock) segment); LOGGER.trace("plane #{} = {}", planes.size() - 1, segment); } segment.close(); } }
/** * @see loci.formats.IFormatReader#isThisType(RandomAccessInputStream) */ @Override public boolean isThisType(RandomAccessInputStream stream) throws IOException { final int blockLen = 104; if (!FormatTools.validStream(stream, blockLen, true)) return false; int size = (int) stream.readFloat() * 4; if (size == 0) { stream.seek(0); stream.order(false); size = (int) stream.readFloat() * 4; } stream.skipBytes(4); size *= (int) stream.readFloat(); stream.seek(44); int nsam = (int) stream.readFloat(); size *= nsam; int headerSize = nsam * (int) stream.readFloat() * 4; stream.skipBytes(48); int slices = (int) stream.readFloat(); if (slices > 0) { size *= slices; } return size + headerSize == stream.length() || size == stream.length(); }
private void seekToNextMarker() throws IOException { while (in.getFilePointer() < in.length()) { String check = in.readString(3); if (check.equals(MARKER)) { in.skipBytes(1); return; } in.seek(in.getFilePointer() - 2); } }
@Override protected void initFile(String id) throws FormatException, IOException { super.initFile(id); in = new RandomAccessInputStream(id); CoreMetadata m = core.get(0); m.littleEndian = false; in.order(isLittleEndian()); m.sizeX = in.readShort(); m.sizeY = in.readShort(); m.sizeZ = in.readShort(); long fileLength = in.length() - HEADER_SIZE; int nBytes = (int) (fileLength / (getSizeX() * getSizeY() * getSizeZ())); m.pixelType = FormatTools.pixelTypeFromBytes(nBytes, false, false); m.sizeC = 1; m.sizeT = 1; m.rgb = false; m.dimensionOrder = "XYZCT"; m.imageCount = getSizeZ() * getSizeC() * getSizeT(); MetadataStore store = makeFilterMetadata(); MetadataTools.populatePixels(store, this); }
private int findNextOffset(RandomAccessInputStream s, byte[] marker) throws IOException { for (long i=s.getFilePointer(); i<s.length()-marker.length; i++) { s.seek(i); boolean found = true; for (int q=0; q<marker.length; q++) { if (marker[q] != s.readByte()) { found = false; break; } } if (found) return (int) (i + marker.length); } return -1; }
/** * @see loci.formats.IFormatReader#openBytes(int, byte[], int, int, int, int) */ @Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); if (getSeries() != lastSeries) { if (seriesStream != null) { seriesStream.close(); } seriesStream = new RandomAccessInputStream(pixelsFiles.get(getSeries())); lastSeries = getSeries(); } long offset = (long) no * FormatTools.getPlaneSize(this); if (offset < seriesStream.length()) { seriesStream.seek(offset); readPlane(seriesStream, x, y, w, h, buf); } return buf; }
@Override protected void initFile(String id) throws FormatException, IOException { RandomAccessInputStream s = new RandomAccessInputStream(id); use64Bit = s.length() >= Math.pow(2, 32); s.close(); super.initFile(id); }
@Override public int available() throws IOException { long remain = length() - getFilePointer(); if (remain > Integer.MAX_VALUE) remain = Integer.MAX_VALUE; return (int) remain; }
private void readSegments(String id) throws IOException { if (in != null) { in.close(); } in = new RandomAccessInputStream(id, BUFFER_SIZE); in.order(isLittleEndian()); while (in.getFilePointer() < in.length()) { Segment segment = readSegment(id); if (segment == null) { break; } segments.add(segment); if (segment instanceof SubBlock) { planes.add((SubBlock) segment); LOGGER.trace("plane #{} = {}", planes.size() - 1, segment); } segment.close(); } }
/** * @see loci.formats.IFormatReader#isThisType(RandomAccessInputStream) */ @Override public boolean isThisType(RandomAccessInputStream stream) throws IOException { final int blockLen = 104; if (!FormatTools.validStream(stream, blockLen, true)) return false; int size = (int) stream.readFloat() * 4; if (size == 0) { stream.seek(0); stream.order(false); size = (int) stream.readFloat() * 4; } stream.skipBytes(4); size *= (int) stream.readFloat(); stream.seek(44); int nsam = (int) stream.readFloat(); size *= nsam; int headerSize = nsam * (int) stream.readFloat() * 4; stream.skipBytes(48); int slices = (int) stream.readFloat(); if (slices > 0) { size *= slices; } return size + headerSize == stream.length() || size == stream.length(); }