#!/usr/bin/perl # # addexif by Tami Takamiya (me@tamichan.com) # # 2008-01-19 Version 0.1 - initially created. # use Image::ExifTool; use XML::Simple; sub garmin { my($time) = `date --rfc-3339=seconds`; my($lat, $latRef, $lon, $lonRef); $out = `gpsbabel -i garmin,get_posn -f usb: -o gpx -F-`; if ($out) { $xs = new XML::Simple; $ref = $xs->XMLin($out); $lat = $ref->{wpt}->{lat}; $latRef = ($lat > 0) ? 'N' : 'S'; $lon = $ref->{wpt}->{lon}; $lonRef = ($lon > 0) ? 'E' : 'W'; $lat = abs($lat); $lon = abs($lon); $gpsTime = $ref->{time}; $time = substr($gpsTime, 0, 10) . ' ' . substr($gpsTime, 11, 8); } ( $time, $lat, $latRef, $lon, $lonRef ); } # main if (-f $ARGV[0]) { my( $time, $lat, $latRef, $lon, $lonRef ) = &garmin; my $exifTool = new Image::ExifTool; $exifTool->SetNewValue( dateTimeOriginal => $time ); $exifTool->SetNewValue( Make => 'OLPC' ); $exifTool->SetNewValue( Model => 'XO-1' ); if ( $lat ) { $exifTool->SetNewValue( GPSlatitude => $lat ); $exifTool->SetNewValue( GPSlatitudeRef => $latRef ); $exifTool->SetNewValue( GPSlongitude => $lon ); $exifTool->SetNewValue( GPSlongitudeRef => $lonRef ); } $exifTool->WriteInfo($ARGV[0]); } else { print 'specify jpg file', "\n"; }