void writeImage(FileInfo fi, Calibration cal) throws IOException { FileOutputStream out = new FileOutputStream(new File(fi.directory,fi.fileName)); // First write out the full 76 byte header writeHeader(fi,out); // Then the image data ImageWriter writer = new ImageWriter(fi); writer.write(out); // Now write out notes - these are only the basic notes // write out the footer - ie the calibration information writeFooter(fi,out); out.close(); IJ.showStatus("Saved "+fi.fileName); }
void write8BitImage(OutputStream out, byte[] pixels) throws IOException { int bytesWritten = 0; int size = fi.width*fi.height; int count = 8192; while (bytesWritten<size) { if ((bytesWritten + count)>size) count = size - bytesWritten; //System.out.println(bytesWritten + " " + count + " " + size); out.write(pixels, bytesWritten, count); bytesWritten += count; showProgress((double)bytesWritten/size); } }
case FileInfo.COLOR8: if (fi.nImages>1 && fi.virtualStack!=null) write8BitVirtualStack(out, fi.virtualStack); else if (fi.nImages>1) write8BitStack(out, (Object[])fi.pixels); else write8BitImage(out, (byte[])fi.pixels); break; case FileInfo.GRAY16_SIGNED: case FileInfo.GRAY16_UNSIGNED: if (fi.nImages>1 && fi.virtualStack!=null) write16BitVirtualStack(out, fi.virtualStack); else if (fi.nImages>1) write16BitStack(out, (Object[])fi.pixels); else write16BitImage(out, (short[])fi.pixels); break; case FileInfo.RGB48: writeRGB48Image(out, (Object[])fi.pixels); break; case FileInfo.GRAY32_FLOAT: if (fi.nImages>1 && fi.virtualStack!=null) writeFloatVirtualStack(out, fi.virtualStack); else if (fi.nImages>1) writeFloatStack(out, (Object[])fi.pixels); else writeFloatImage(out, (float[])fi.pixels); break; case FileInfo.RGB:
void write16BitStack(OutputStream out, Object[] stack) throws IOException { showProgressBar = false; for (int i=0; i<fi.nImages; i++) { IJ.showStatus("Writing: " + (i+1) + "/" + fi.nImages); write16BitImage(out, (short[])stack[i]); IJ.showProgress((double)(i+1)/fi.nImages); } }
void write8BitStack(OutputStream out, Object[] stack) throws IOException { showProgressBar = false; for (int i=0; i<fi.nImages; i++) { IJ.showStatus("Writing: " + (i+1) + "/" + fi.nImages); write8BitImage(out, (byte[])stack[i]); IJ.showProgress((double)(i+1)/fi.nImages); } }
void writeFloatStack(OutputStream out, Object[] stack) throws IOException { showProgressBar = false; for (int i=0; i<fi.nImages; i++) { IJ.showStatus("Writing: " + (i+1) + "/" + fi.nImages); writeFloatImage(out, (float[])stack[i]); IJ.showProgress((double)(i+1)/fi.nImages); } }
void write16BitStack(OutputStream out, Object[] stack) throws IOException { showProgressBar = false; for (int i=0; i<fi.nImages; i++) { IJ.showStatus("Writing: " + (i+1) + "/" + fi.nImages); write16BitImage(out, (short[])stack[i]); IJ.showProgress((double)(i+1)/fi.nImages); } }
void write8BitStack(OutputStream out, Object[] stack) throws IOException { showProgressBar = false; for (int i=0; i<fi.nImages; i++) { IJ.showStatus("Writing: " + (i+1) + "/" + fi.nImages); write8BitImage(out, (byte[])stack[i]); IJ.showProgress((double)(i+1)/fi.nImages); } }
void writeFloatStack(OutputStream out, Object[] stack) throws IOException { showProgressBar = false; for (int i=0; i<fi.nImages; i++) { IJ.showStatus("Writing: " + (i+1) + "/" + fi.nImages); writeFloatImage(out, (float[])stack[i]); IJ.showProgress((double)(i+1)/fi.nImages); } }
case FileInfo.COLOR8: if (fi.nImages>1 && fi.virtualStack!=null) write8BitVirtualStack(out, fi.virtualStack); else if (fi.nImages>1) write8BitStack(out, (Object[])fi.pixels); else write8BitImage(out, (byte[])fi.pixels); break; case FileInfo.GRAY16_SIGNED: case FileInfo.GRAY16_UNSIGNED: if (fi.nImages>1 && fi.virtualStack!=null) write16BitVirtualStack(out, fi.virtualStack); else if (fi.nImages>1) write16BitStack(out, (Object[])fi.pixels); else write16BitImage(out, (short[])fi.pixels); break; case FileInfo.RGB48: writeRGB48Image(out, (Object[])fi.pixels); break; case FileInfo.GRAY32_FLOAT: if (fi.nImages>1 && fi.virtualStack!=null) writeFloatVirtualStack(out, fi.virtualStack); else if (fi.nImages>1) writeFloatStack(out, (Object[])fi.pixels); else writeFloatImage(out, (float[])fi.pixels); break; case FileInfo.RGB:
pixels[i] = (short)(pixels[i]-32768); ImageWriter file = new ImageWriter(fi); out = new BufferedOutputStream(new FileOutputStream(path)); file.write(out); out.close();
void write8BitImage(OutputStream out, byte[] pixels) throws IOException { int bytesWritten = 0; int size = fi.width*fi.height; int count = 8192; while (bytesWritten<size) { if ((bytesWritten + count)>size) count = size - bytesWritten; //System.out.println(bytesWritten + " " + count + " " + size); out.write(pixels, bytesWritten, count); bytesWritten += count; showProgress((double)bytesWritten/size); } }
void write16BitVirtualStack(OutputStream out, VirtualStack virtualStack) throws IOException { showProgressBar = false; boolean flip = "FlipTheseImages".equals(fi.fileName); for (int i=1; i<=fi.nImages; i++) { IJ.showStatus("Writing: " + i + "/" + fi.nImages); ImageProcessor ip = virtualStack.getProcessor(i); if (flip) ip.flipVertical(); short[] pixels = (short[])ip.getPixels(); write16BitImage(out, pixels); IJ.showProgress((double)i/fi.nImages); } }
void write8BitVirtualStack(OutputStream out, VirtualStack virtualStack) throws IOException { showProgressBar = false; boolean flip = "FlipTheseImages".equals(fi.fileName); for (int i=1; i<=fi.nImages; i++) { IJ.showStatus("Writing: " + i + "/" + fi.nImages); ImageProcessor ip = virtualStack.getProcessor(i); if (flip) ip.flipVertical(); byte[] pixels = (byte[])ip.getPixels(); write8BitImage(out, pixels); IJ.showProgress((double)i/fi.nImages); } }
void writeFloatVirtualStack(OutputStream out, VirtualStack virtualStack) throws IOException { showProgressBar = false; boolean flip = "FlipTheseImages".equals(fi.fileName); for (int i=1; i<=fi.nImages; i++) { IJ.showStatus("Writing: " + i + "/" + fi.nImages); ImageProcessor ip = virtualStack.getProcessor(i); if (flip) ip.flipVertical(); float[] pixels = (float[])ip.getPixels(); writeFloatImage(out, pixels); IJ.showProgress((double)i/fi.nImages); } }
pixels[i] = (short)(pixels[i]-32768); ImageWriter file = new ImageWriter(fi); out = new BufferedOutputStream(new FileOutputStream(path)); file.write(out); out.close();
void writeRGBImage(OutputStream out, int[] pixels) throws IOException { long bytesWritten = 0L; long size = 3L*fi.width*fi.height; int count = fi.width*24; byte[] buffer = new byte[count]; while (bytesWritten<size) { if ((bytesWritten+count)>size) count = (int)(size-bytesWritten); int j = (int)(bytesWritten/3L); for (int i=0; i<count; i+=3) { buffer[i] = (byte)(pixels[j]>>16); //red buffer[i+1] = (byte)(pixels[j]>>8); //green buffer[i+2] = (byte)pixels[j]; //blue j++; } out.write(buffer, 0, count); bytesWritten += count; showProgress((double)bytesWritten/size); } }
void write16BitVirtualStack(OutputStream out, VirtualStack virtualStack) throws IOException { showProgressBar = false; boolean flip = "FlipTheseImages".equals(fi.fileName); for (int i=1; i<=fi.nImages; i++) { IJ.showStatus("Writing: " + i + "/" + fi.nImages); ImageProcessor ip = virtualStack.getProcessor(i); if (flip) ip.flipVertical(); short[] pixels = (short[])ip.getPixels(); write16BitImage(out, pixels); IJ.showProgress((double)i/fi.nImages); } }
void write8BitVirtualStack(OutputStream out, VirtualStack virtualStack) throws IOException { showProgressBar = false; boolean flip = "FlipTheseImages".equals(fi.fileName); for (int i=1; i<=fi.nImages; i++) { IJ.showStatus("Writing: " + i + "/" + fi.nImages); ImageProcessor ip = virtualStack.getProcessor(i); if (flip) ip.flipVertical(); byte[] pixels = (byte[])ip.getPixels(); write8BitImage(out, pixels); IJ.showProgress((double)i/fi.nImages); } }
void writeFloatVirtualStack(OutputStream out, VirtualStack virtualStack) throws IOException { showProgressBar = false; boolean flip = "FlipTheseImages".equals(fi.fileName); for (int i=1; i<=fi.nImages; i++) { IJ.showStatus("Writing: " + i + "/" + fi.nImages); ImageProcessor ip = virtualStack.getProcessor(i); if (flip) ip.flipVertical(); float[] pixels = (float[])ip.getPixels(); writeFloatImage(out, pixels); IJ.showProgress((double)i/fi.nImages); } }