[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]
Posted by "dave morgan" <morgadave@xxxxxxxxxxxxxx>
I am trying to load EXIF data from jpegs into some sort of array, and I want it to
end up sorted by timestamp, but I can't get the sort to work right.
Any suggestions on how to sort, or if I need a different data structure?
more background in the Man page at http://www.morgad.co.uk/csv2kml-man.html
my current code (excerpts) -
# find all jpeg files in current directory
my $file;
my $filetype;
my @jpeg;
$numjpegs = 0;
my ($mtime, $csv_timestamp, $exifTool);
my $mm = new File::MMagic;
opendir(DIR, $dirname) or die "can't opendir $dirname: $!";
foreach $file ( readdir(DIR) ) {
$filetype = $mm->checktype_filename("$file");
if ($filetype eq "image/jpeg") {
$numjpegs++;
$jpeg[$numjpegs]{file} = $file;
$exifTool = new Image::ExifTool;
$exifTool->ExtractInfo($file);
$csv_timestamp = $exifTool->GetValue('CreateDate');
unless($csv_timestamp) {
$csv_timestamp = $exifTool->GetValue('FileModifyDate');
}
$mtime = &to_seconds($csv_timestamp);
$jpeg[$numjpegs]{mtime}= $mtime;
$jpeg[$numjpegs]{lat} =
parse_location($exifTool->GetValue('GPSLatitude'));
$jpeg[$numjpegs]{long} =
parse_location($exifTool->GetValue('GPSLongitude'));
}
}
closedir(DIR);
# unsorted
foreach $count (1 .. $numjpegs) {
print "$count - $jpeg[$count]{file} - $jpeg[$count]{mtime}\n";
}
# sorted
my @sorted;
## //FIXME// what to put here??
@sorted = sort { $jpeg[$a]{mtime} <=> $jpeg[$b]{mtime} };
foreach $count (1 .. $numjpegs) {
print "$count - $sorted[$count]{file} - $sorted[$count]{mtime}\n";
}
best regards
Dave
--
++++++++++++++++++++++++++++++++
Generated by the contributors page
in the members area at D+C GLUG
http://www.dcglug.org.uk/members/list.php
webmaster@xxxxxxxxxxxxx
--
The Mailing List for the Devon & Cornwall LUG
http://mailman.dclug.org.uk/listinfo/list
FAQ: http://www.dcglug.org.uk/linux_adm/list-faq.html