You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Brian Arnold <br...@gmail.com> on 2011/06/10 21:40:05 UTC
Sanselan Usage
I'm attempting to use the Sanselan library to add metadata to a TIFF file,
however, I don't know how to accomplish this. I've successfully accomplished
this with a Jpeg, but I don't know what changes need to be done to co-opt
this code for TIFFs. I'll be seperating out the primary sections of code to
a common function, but I've simplified the Jpeg code for posting here. So,
any thoughts on how to accomplish doing the same with a TIFF?
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import org.apache.sanselan.*;
import org.apache.sanselan.common.*;
import org.apache.sanselan.formats.tiff.TiffImageMetadata;
import org.apache.sanselan.formats.tiff.write.TiffImageWriterLossless;
import org.apache.sanselan.formats.tiff.write.TiffOutputDirectory;
import org.apache.sanselan.formats.tiff.write.TiffOutputField;
import org.apache.sanselan.formats.tiff.write.TiffOutputSet;
public void DoSomething(String tagName, String tagValue){
File inputFile = getInputFile();
IImageMetadata data = null;
OutputStream os = null;
data = Sanselan.getMetadata(inputFile);
TiffOutputSet outputSet = null;
outputSet = getExif(data);
TiffOutputField imageHistoryPre = outputSet.findField(tag);
if (imageHistoryPre != null) {
outputSet.removeField(tag);
}
TiffOutputField imageId = new TiffOutputField(tag, fieldType,
tagValue.length(), tagValue.getBytes());
TiffOutputDirectory exifDirectory = outputSet.getOrCreateExifDirectory();
exifDirectory.add(imageId);
//everything after this is where I get confused.
File temp;
temp = File.createTempFile("FileTaggingProcessingFile", null);
os = new FileOutputStream(temp);
os = new BufferedOutputStream(os);
if (data instanceof JpegImageMetadata) {
new ExifRewriter().updateExifMetadataLossless(inputFile, os, outputSet);
}
if (os != null) {
os.close();
}
getInputFile().delete();
temp.renameTo(getInputFile());
}