package uk.co.mmscomputing.imageio.tiff;
import java.io.*;
import java.awt.*;
import java.awt.color.*;
import java.awt.image.*;
//import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.ImageWriteParam;
import javax.imageio.IIOImage;
import javax.imageio.stream.ImageOutputStream;
public class MainApp{
public static void main(String[] args){
try{
System.out.println("Test Program : "+MainApp.class.getName());
BufferedImage image;
try{
image = ImageIO.read(new File("test.jpeg"));
int imageType = BufferedImage.TYPE_BYTE_GRAY;
int w=image.getWidth();
int h=image.getHeight();
BufferedImage newImg=new BufferedImage(w,h,imageType);
ColorSpace srcSpace=image.getColorModel().getColorSpace();
ColorSpace newSpace=newImg.getColorModel().getColorSpace();
ColorConvertOp convert=new ColorConvertOp(srcSpace,newSpace,null);
convert.filter(image,newImg);
image = newImg;
}catch(Exception e){
image = new BufferedImage(150,150,BufferedImage.TYPE_BYTE_BINARY);
Graphics2D g = (Graphics2D)image.getGraphics();
g.drawString("Hello World!",10,20);
}
ImageWriter writer = (ImageWriter)ImageIO.getImageWritersByFormatName("tif").next();
System.out.println(writer.getClass().getName());
File file = new File("test1.tif");file.delete();
System.out.println("Output 1: "+file.getAbsolutePath());
ImageOutputStream ios = ImageIO.createImageOutputStream(file);
writer.setOutput(ios);
// ImageWriteParam iwp = writer.getDefaultWriteParam();
// ((TIFFImageWriteParam)iwp).setPhotometricInterpretation("WHITEISZERO");
// iwp.setCompressionType("t6mmr");
ImageWriteParam iwp = writer.getDefaultWriteParam();
((TIFFImageWriteParam)iwp).setPhotometricInterpretation("YCbCr");
iwp.setCompressionType("jpeg");
iwp.setCompressionQuality(0.9f);
writer.prepareWriteSequence(null);
writer.writeToSequence(new IIOImage(image,null,null),iwp);
writer.endWriteSequence();
ios.close();
BufferedImage readimage = ImageIO.read(file);
Graphics2D g = (Graphics2D)readimage.getGraphics();
g.drawString("Hello World!",20,40);
file = new File("test2.tif");file.delete();
System.out.println("Output 2: "+file.getAbsolutePath());
ios = ImageIO.createImageOutputStream(file);
writer.setOutput(ios);
writer.prepareWriteSequence(null);
writer.writeToSequence(new IIOImage(readimage,null,null),iwp);
writer.writeToSequence(new IIOImage(image,null,null),iwp);
writer.endWriteSequence();
ios.close();
}catch(Exception e){
e.printStackTrace();
}
}
}