private void writePLTE() throws IOException { if (!(getColorModel() instanceof IndexColorModel)) return; IndexColorModel model = (IndexColorModel) getColorModel(); byte[][] lut = new byte[3][256]; model.getReds(lut[0]); model.getGreens(lut[1]); model.getBlues(lut[2]); out.writeInt(768); byte[] b = new byte[772]; b[0] = 'P'; b[1] = 'L'; b[2] = 'T'; b[3] = 'E'; for (int i=0; i<lut[0].length; i++) { for (int j=0; j<lut.length; j++) { b[i*lut.length + j + 4] = lut[j][i]; } } out.write(b); out.writeInt(crc(b)); }
public void writeIFD(IFD ifd, long nextOffset) throws FormatException, IOException { TreeSet<Integer> keys = new TreeSet<Integer>(ifd.keySet()); int keyCount = keys.size(); if (ifd.containsKey(new Integer(IFD.LITTLE_ENDIAN))) keyCount--; if (ifd.containsKey(new Integer(IFD.BIG_TIFF))) keyCount--; if (ifd.containsKey(new Integer(IFD.REUSE))) keyCount--; long fp = out.getFilePointer(); int bytesPerEntry = bigTiff ? TiffConstants.BIG_TIFF_BYTES_PER_ENTRY : TiffConstants.BYTES_PER_ENTRY; int ifdBytes = (bigTiff ? 16 : 6) + bytesPerEntry * keyCount; if (bigTiff) out.writeLong(keyCount); else out.writeShort(keyCount); ByteArrayHandle extra = new ByteArrayHandle(); RandomAccessOutputStream extraStream = new RandomAccessOutputStream(extra); for (Integer key : keys) { if (key.equals(IFD.LITTLE_ENDIAN) || key.equals(IFD.BIG_TIFF) || key.equals(IFD.REUSE)) continue; Object value = ifd.get(key); writeIFDValue(extraStream, ifdBytes + fp, key.intValue(), value); } if (bigTiff) out.seek(out.getFilePointer()); writeIntValue(out, nextOffset); out.write(extra.getBytes(), 0, (int) extra.length()); extraStream.close(); }
for (int row=0; row<h; row++) { out.skipBytes(nChannels * x); out.write(tmp, row * rowLen, rowLen); for (int i=0; i<pad; i++) { out.writeByte(0);
private void writePLTE() throws IOException { if (!(getColorModel() instanceof IndexColorModel)) return; IndexColorModel model = (IndexColorModel) getColorModel(); byte[][] lut = new byte[3][256]; model.getReds(lut[0]); model.getGreens(lut[1]); model.getBlues(lut[2]); out.writeInt(768); byte[] b = new byte[772]; b[0] = 'P'; b[1] = 'L'; b[2] = 'T'; b[3] = 'E'; for (int i=0; i<lut[0].length; i++) { for (int j=0; j<lut.length; j++) { b[i*lut.length + j + 4] = lut[j][i]; } } out.write(b); out.writeInt(crc(b)); }
public void writeIFD(IFD ifd, long nextOffset) throws FormatException, IOException { TreeSet<Integer> keys = new TreeSet<Integer>(ifd.keySet()); int keyCount = keys.size(); if (ifd.containsKey(new Integer(IFD.LITTLE_ENDIAN))) keyCount--; if (ifd.containsKey(new Integer(IFD.BIG_TIFF))) keyCount--; if (ifd.containsKey(new Integer(IFD.REUSE))) keyCount--; long fp = out.getFilePointer(); int bytesPerEntry = bigTiff ? TiffConstants.BIG_TIFF_BYTES_PER_ENTRY : TiffConstants.BYTES_PER_ENTRY; int ifdBytes = (bigTiff ? 16 : 6) + bytesPerEntry * keyCount; if (bigTiff) out.writeLong(keyCount); else out.writeShort(keyCount); ByteArrayHandle extra = new ByteArrayHandle(); RandomAccessOutputStream extraStream = new RandomAccessOutputStream(extra); for (Integer key : keys) { if (key.equals(IFD.LITTLE_ENDIAN) || key.equals(IFD.BIG_TIFF) || key.equals(IFD.REUSE)) continue; Object value = ifd.get(key); writeIFDValue(extraStream, ifdBytes + fp, key.intValue(), value); } if (bigTiff) out.seek(out.getFilePointer()); writeIntValue(out, nextOffset); out.write(extra.getBytes(), 0, (int) extra.length()); extraStream.close(); }
for (int row=0; row<h; row++) { out.skipBytes(nChannels * x); out.write(tmp, row * rowLen, rowLen); for (int i=0; i<pad; i++) { out.writeByte(0);
private void writeFCTL(int width, int height) throws IOException { out.writeInt(26); byte[] b = new byte[30]; b[0] = 'f'; b[1] = 'c'; b[2] = 'T'; b[3] = 'L'; DataTools.unpackBytes(nextSequenceNumber++, b, 4, 4, false); DataTools.unpackBytes(width, b, 8, 4, false); DataTools.unpackBytes(height, b, 12, 4, false); DataTools.unpackBytes(0, b, 16, 4, false); DataTools.unpackBytes(0, b, 20, 4, false); DataTools.unpackBytes(1, b, 24, 2, false); DataTools.unpackBytes(fps, b, 26, 2, false); b[28] = (byte) 1; b[29] = (byte) 0; out.write(b); out.writeInt(crc(b)); }
/** * @see loci.formats.IFormatWriter#saveBytes(int, byte[], int, int, int, int) */ @Override public void saveBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { checkParams(no, buf, x, y, w, h); /* if (!isFullPlane(x, y, w, h)) { throw new FormatException( "JPEG2000Writer does not yet support saving image tiles."); } */ //MetadataRetrieve retrieve = getMetadataRetrieve(); //int width = retrieve.getPixelsSizeX(series).getValue().intValue(); //int height = retrieve.getPixelsSizeY(series).getValue().intValue(); out.write(compressBuffer(no, buf, x, y, w, h)); }
private void writeFCTL(int width, int height) throws IOException { out.writeInt(26); byte[] b = new byte[30]; b[0] = 'f'; b[1] = 'c'; b[2] = 'T'; b[3] = 'L'; DataTools.unpackBytes(nextSequenceNumber++, b, 4, 4, false); DataTools.unpackBytes(width, b, 8, 4, false); DataTools.unpackBytes(height, b, 12, 4, false); DataTools.unpackBytes(0, b, 16, 4, false); DataTools.unpackBytes(0, b, 20, 4, false); DataTools.unpackBytes(1, b, 24, 2, false); DataTools.unpackBytes(fps, b, 26, 2, false); b[28] = (byte) 1; b[29] = (byte) 0; out.write(b); out.writeInt(crc(b)); }
/** * @see loci.formats.IFormatWriter#saveBytes(int, byte[], int, int, int, int) */ @Override public void saveBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { checkParams(no, buf, x, y, w, h); /* if (!isFullPlane(x, y, w, h)) { throw new FormatException( "JPEG2000Writer does not yet support saving image tiles."); } */ //MetadataRetrieve retrieve = getMetadataRetrieve(); //int width = retrieve.getPixelsSizeX(series).getValue().intValue(); //int height = retrieve.getPixelsSizeY(series).getValue().intValue(); out.write(compressBuffer(no, buf, x, y, w, h)); }
out.write(b);
pixels.write(formatkey.getBytes(Constants.ENCODING)); // write format key pixels.write(endianString.getBytes(Constants.ENCODING)); // endianness. unpackBytes(bytesPerPixel, v2, 0, 2, !bigendian); pixels.write(v2); // unitSize for (int d : sz) { unpackBytes(d, v4, 0, 4, !bigendian); pixels.write(v4); pixels.write(buf); LOGGER.info("********* V3DrawWriter.java internal variables *********"); LOGGER.info("bytesPerPixel = " + bytesPerPixel); pixels.seek(planeSize * realIndex + pixelOffset); pixels.write(buf);
pixels.write(formatkey.getBytes(Constants.ENCODING)); // write format key pixels.write(endianString.getBytes(Constants.ENCODING)); // endianness. unpackBytes(bytesPerPixel, v2, 0, 2, !bigendian); pixels.write(v2); // unitSize for (int d : sz) { unpackBytes(d, v4, 0, 4, !bigendian); pixels.write(v4); pixels.write(buf); LOGGER.info("********* V3DrawWriter.java internal variables *********"); LOGGER.info("bytesPerPixel = " + bytesPerPixel); pixels.seek(planeSize * realIndex + pixelOffset); pixels.write(buf);