Leave That Thing Alone Blog
Retrieve Exif Metadata from Camera RAW and TIFF in ColdFusion 8
This example demonstrates how to get Exif metadata from Camera RAW and TIFF files in ColdFusion. In this sample I'm using a raw CR2 file from a Canon D30. Please note this example only reads RAW exif metdata, it does not read/process the RAW image
update: Viewing Camera RAW Images with ColdFusion
ColdFusion 8's image tags allow the retrieval of Exif metadata from only certain image types, ColdFusion actually uses Drew Noakes Metadata Extract library. There is now a beta version (metadata-extractor-2.4.0-beta-1.jar) that introduces code for processing camera RAW images and TIFF files.
One way to use this beta library is to go into the [coldfusion8]\lib\ folder and rename the 'metadata-extractor-2.2.2.jar' file to .bak then copy the latest metadata-extractor JAR file into that directory.
However, in this example i'm going to use Mark Mandel's JavaLoader so I can use the beta library separately from the stable version cfimage uses.
The code below reads a camera Raw image then iterates through all the metadata:
<cfscript>
//read Canon RAW CR2 file
photoFile = createObject("java","java.io.File").init("#expandpath('IMG_7913.CR2')#");
//set the path
paths[1] = "D:\test\metadata-extractor-2.4.0-beta-1.jar";
//create the loader
javaLoader = createObject("component", "JavaLoader").init(paths);
//create the TiffMetadataReader instace
tiffMetadataReader = javaLoader.create("com.drew.imaging.tiff.TiffMetadataReader");
//read metadata
metadata = tiffMetadataReader.readMetadata(photoFile);
//get directories
directories = metadata.getDirectoryIterator();
</cfscript><cfoutput>
<table cellspacing="0">
<cfloop condition="directories.hasNext()">
<cfset currentDirectory = directories.next() />
<cfset tags = currentDirectory.getTagIterator() />
<cfloop condition="tags.hasNext()">
<cfset currentTag = tags.next()>
<tr>
<td valign="top">#currentTag.getTagType()#</td>
<td style="vertical-align:top;width:150px;">#currentTag.getTagName()#</td>
<td valign="top">#currentTag.getDescription()# </td>
<td>#currentTag.getTagTypeHex()#</td>
</tr>
</cfloop>
</cfloop>
</table>
</cfoutput>
Sample output:

Comments
There are no comments for this entry.
[Add Comment] [Subscribe to Comments]