Created
February 23, 2013 22:44
-
-
Save ujihisa/5021684 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns aaa.core | |
(:import [java.io File] | |
[org.apache.sanselan ImageReadException Sanselan] | |
[org.apache.sanselan.common IImageMetadata, RationalNumber] | |
[org.apache.sanselan.formats.jpeg JpegImageMetadata] | |
[org.apache.sanselan.formats.tiff TiffField TiffImageMetadata] | |
[org.apache.sanselan.formats.tiff.constants ExifTagConstants | |
GPSTagConstants TagInfo TiffConstants TiffTagConstants]) | |
(:gen-class)) | |
(defn print-tag-value [metadata tagInfo] | |
(if-let [field (.findEXIFValue metadata tagInfo)] | |
(println (str " (" (.name tagInfo) ": " (.getValueDescription field))) | |
(println (str " (" (.name tagInfo) " not found.)")))) | |
(defn readexif [file] | |
(let [metadata (Sanselan/getMetadata file)] | |
(when (nil? metadata) | |
(println "\tNo EXIF metdata was found")) | |
(when (instance? JpegImageMetadata metadata) | |
(println " -- Standard EXIF Tags") | |
(print-tag-value metadata (TiffTagConstants/TIFF_TAG_XRESOLUTION)) | |
(print-tag-value metadata (TiffTagConstants/TIFF_TAG_DATE_TIME)) | |
(print-tag-value metadata (ExifTagConstants/EXIF_TAG_DATE_TIME_ORIGINAL)) | |
(print-tag-value metadata (ExifTagConstants/EXIF_TAG_CREATE_DATE)) | |
(print-tag-value metadata (ExifTagConstants/EXIF_TAG_ISO)) | |
(print-tag-value metadata (ExifTagConstants/EXIF_TAG_SHUTTER_SPEED_VALUE)) | |
(print-tag-value metadata (ExifTagConstants/EXIF_TAG_APERTURE_VALUE)) | |
(print-tag-value metadata (ExifTagConstants/EXIF_TAG_BRIGHTNESS_VALUE)) | |
(print-tag-value metadata (GPSTagConstants/GPS_TAG_GPS_LATITUDE_REF)) | |
(print-tag-value metadata (GPSTagConstants/GPS_TAG_GPS_LATITUDE)) | |
(print-tag-value metadata (GPSTagConstants/GPS_TAG_GPS_LONGITUDE_REF)) | |
(print-tag-value metadata (GPSTagConstants/GPS_TAG_GPS_LONGITUDE_REF)) | |
; simple interface to GPS data | |
(println " -- GPS Info") | |
(when-let [exifMetadata (.getExif metadata)] | |
(when-let [gpsInfo (.getGPS exifMetadata)] | |
(let [longitude (.getLongitudeAsDegreesEast gpsInfo) | |
latitude (.getLatitudeAsDegreesNorth gpsInfo)] | |
(println (str " GPS Description: " gpsInfo)) | |
(println (str " GPS Longitude (Degrees East):" longitude)) | |
(println (str " GPS Latitude (Degrees North):" latitude))))) | |
; Print all EXIF data | |
(println " -- All EXIF info") | |
(doseq [item (.getItems metadata)] | |
(println (str " " item))) | |
(println)))) | |
(defn -main [] | |
(let [file (File. "P1030514.JPG")] | |
(prn 'file (.getPath file)) | |
(readexif file))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defproject aaa "0.1.0-SNAPSHOT" | |
:description "FIXME: write description" | |
:url "http://example.com/FIXME" | |
:license {:name "Eclipse Public License" | |
:url "http://www.eclipse.org/legal/epl-v10.html"} | |
:dependencies [[org.clojure/clojure "1.4.0"] | |
[org.apache.sanselan/sanselan "0.97-incubator"]] | |
:main aaa.core) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment