package edu.mbl.jif.imaging;
import com.sun.media.imageio.plugins.tiff.BaselineTIFFTagSet;
import edu.mbl.jif.imaging.util.ImageFactoryGrayScale;
import edu.mbl.jif.imaging.meta.TiffMetadata;
import edu.mbl.jif.imaging.tiff.MultipageTiffFile;
import edu.mbl.jif.imaging.tiff.MultipageTiffFile;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
/**
*
* @author GBH
*/
public class MultipageTiffTests {
// >>>> Testing
public static void main(String[] args)
{
//ImagingUtils.listReadersWriters();
// OME test Image:
//"D:\\_TestImages\\OME-TIFF Test Images\\tubhiswt_C1.tiff""
//"D:\\_TestImages\\meta\\xyzt-200x200x10x15.tif"
// String imageFile = //edu.mbl.jif.Constants.testDataPath +
// "meta/ome.tif";
//testGetImageInfo(imageFile);
testFastWrite();
if (false) {
// testThumbSample(3);
// testThumbSample(4);
// testThumbSample(5);
}
// testWriteMultiple();
if (false) {
BufferedImage img = ImageFactoryGrayScale.testImageByte();
MultipageTiffFile.appendImageToTiffFile(img, "byterooski");
//appendImageToTiffFile(ImageFactoryGrayScale.testImageByte(), "byteType");
//appendImageToTiffFile(ImageFactoryGrayScale.testImageFloat(), "floatType");
}
}
// Test SequenceReadIncremental -------------------------
// static void testSequenceReadIncremental() {
// // Test: read sequence incrementally
// JFrame f = new JFrame();
// psj.Image.ImagePanel ip = new psj.Image.ImagePanel();
// f.getContentPane().add(ip, BorderLayout.CENTER);
// f.setSize(new Dimension(649, 540));
// f.setVisible(true);
// ArrayList img2 = new ArrayList();
// MultipageTiffFile tif2 = new MultipageTiffFile( //"out.tif");
// edu.mbl.jif.Constants.testDataPath + "ps/STMPS_04_0621_1451_54_Copy.tif");
// int n = tif2.getNumImages();
// ip.setPreferredSize(new Dimension(tif2.getWidth(0), tif2.getHeight(0)));
// for (int k = 0; k < 10; k++) {
// for (int i = 0; i < n; i++) {
// //img2.add(tif2.getImage(i));
// ip.setImage(tif2.getImage(i));
// try {
// Thread.sleep(10);
// } catch (InterruptedException ex) {
// }
// }
// for (int i = n - 1; i > 0; i--) {
// //img2.add(tif2.getImage(i));
// ip.setImage(tif2.getImage(i));
// try {
// Thread.sleep(10);
// } catch (InterruptedException ex) {
// }
// }
// }
// tif2.close();
// }
static void testWriteMultiple()
{
//testWriteSeries() {
ArrayList imgs = new ArrayList();
imgs = MultipageTiffFile.loadImageArrayList("PolStackTest.tif");
// new FrameImageDisplayTabbed(imgs);
MultipageTiffFile.saveImageArrayList(imgs, "out.tif", false);
// Open, append images to a sequence, then close.
for (Iterator iter = imgs.iterator(); iter.hasNext();) {
MultipageTiffFile tif = new MultipageTiffFile("outSeq.tif", false);
Object item = (Object) iter.next();
tif.appendImage((BufferedImage) item);
System.out.println("ImgOut");
tif.close();
}
// MultipageTiffFile tif = new MultipageTiffFile("outSeq.tif", false);
// for (Iterator iter = imgs.iterator(); iter.hasNext();) {
// Object item = (Object) iter.next();
// tif.appendImage((BufferedImage) item);
// System.out.println("ImgOut");
// }
// tif.close();
}
//
// Test METADATA ------------------------------------------------------
static void testWriteMeta()
{
MultipageTiffFile tif = new MultipageTiffFile("PolStackTest.tif");
int n = tif.getNumImages();
System.out.println("n: " + n);
TiffMetadata ts = new TiffMetadata(tif.getImageMetadata(0));
int bps = ts.getNumericTag(BaselineTIFFTagSet.TAG_BITS_PER_SAMPLE);
System.out.println("bps: " + bps);
edu.mbl.jif.imaging.meta.IIOMetadataDisplay.displayIIOMetadataNative(tif.getImageMetadata(0));
edu.mbl.jif.imaging.meta.IIOMetadataDisplay.displayIIOMetadataNative(tif.getStreamMetadata());
//testWriteSeries() {
// ArrayList imgs = new ArrayList();
// imgs = MultipageTiffFile.loadImageArrayList("PS_JulyTest.tif");
// new FrameImageDisplayTabbed(imgs);
// MultipageTiffFile.saveImageArrayList(imgs, "out.tif");
// //Open, append images to a sequence, then close.
// MultipageTiffFile tif = new MultipageTiffFile("outSeq.tif");
// for (Iterator iter = imgs.iterator(); iter.hasNext(); ) {
// Object item = (Object) iter.next();
// IIOMetadata meta = tif.modifyMetadata((BufferedImage) item);
//
// //IIOMetadata meta = tif.createMetadata((BufferedImage) item);
//// tif.appendImage((BufferedImage) item, null, meta);
// System.out.println("ImgOut");
// }
tif.close();
}
//
// Test Thumbnailing------------------------------------
// public static void testThumbSample(int sample) {
// MultipageTiffFile mf = new MultipageTiffFile( //"out.tif");
// edu.mbl.jif.Constants.testDataPath + "ps/_PS_03_0825_1751_01.tiff");
// int numPages = mf.getNumImages();
//
// //BufferedImage bImage = mf.getImage(0);
// BufferedImage thumb = mf.getAsThumbnail(0, sample);
// JFrame f = new JFrame();
// psj.Image.ImagePanel ip = new psj.Image.ImagePanel();
// f.getContentPane().add(ip, BorderLayout.CENTER);
// ip.setImage(thumb);
// f.setSize(new Dimension(649, 540));
// f.setVisible(true);
// mf.close();
// }
public static void testFastWrite() {
String filename = "out.tif";
int width = 2048;
int height = 2048;
int n = 450;
BufferedImage image =
image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
MultipageTiffFile mf = new MultipageTiffFile(filename);
long start = System.currentTimeMillis();
for (int i = 0; i < n; i++) {
mf.appendImage(image);
}
long end = System.currentTimeMillis();
long dur = end - start;
System.out.println(n + " images in " + dur + " msec.");
mf.close();
File f = new File(filename);
long fs = f.length();
System.out.println("filesize = " + fs);
System.out.println(fs/dur + " K/s");
}
}