Фотоклуб - фототехника Canon Nikon Sony

Вернуться   Фотоклуб - фототехника Canon Nikon Sony > Фототехнология > Обмен опытом
Перезагрузить страницу в помощь тем, кто задается вопросом "EF24 или EF28?" и т.п. или анализ предпочтений
 
 
Опции темы Опции просмотра
  (#2) Старый
andyb andyb вне форума
заслуженный участник
Научный сотр.
 
Сообщений: 468
Регистрация: 27.10.2005
По умолчанию Теперь о том как этим востользоваться - 19.03.2007, 00:21

Нужно установить perl интерпретатор (я использую версию ActivePerl 5.8.6.811
http://www.activestate.com/ActivePerl/), библиотеку Image-ExifTool-6.80
(http://www.sno.phy.queensu.ca/~phil/exiftool/) и использовать скрипт exif_stat.pl.

Исходный код скрипта:
----------------------- начало ---------------------------
#!/bin/perl -w
# use: exif_stat.pl [<folder>] [<file extention>]
use strict;
use File::Find;
use Image::ExifTool qw(:Public);

my $dir = shift;
$dir = '.' unless defined ($dir);
my $ext = shift;
$ext = 'cr2' unless defined ($ext);
$ext = '\.' . $ext . '$';

my %focal_set;
my $max_val = 0;
my $max_bar = 70;

if (open (IN, "exif_rep.txt"))
{
while (<IN>)
{
/^([0-9.mm]*)\s*(\d*)/;
next unless defined($1) and defined($2);
$focal_set{$1} = $2;
$max_val = $2 if $max_val < $2;
}
close (IN);
}

find ({wanted => \&process, no_chdir => 1}, $dir);

open (OUT, ">exif_rep.txt");
foreach (sort (keys %focal_set))
{
my $focal = $_;
my $value = $focal_set{$_};
my $bar = '*' x ($max_val > $max_bar ? ($value * ($max_bar - 1) / $max_val + 1) : $value);
write (OUT);

format OUT =
@>>>>> @##### @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<
$focal, $value, $bar
.

}
close (OUT);

sub process
{
return if -d $File::Find::name;
return unless $File::Find::name =~ /$ext/i;

print "$File::Find::name\n";

my $info = ImageInfo($File::Find::name);
my $focal = $$info{'FocalLength'};

if (defined ($focal))
{
$focal_set{$focal}++;
$max_val = $focal_set{$focal} if $max_val < $focal_set{$focal};
}
else
{
print "warn: focal length is undefined in $File::Find::name\n";
}
}
----------------------- конец ----------------------------

Скопируйте и вставте исходный код в файл exif_stat.pl.
Запустите скрипт, в качестве параметра укажите путь откуда рекурсивно делать поиск файлов с заголовками exif. По умолчанию анализируются файлы CR2. (Лично у меня есть в архиве jpeg-и друзей, а также переделаные позже снимки, т.е. дубли, поэтому анализ jpeg-ов я решил не делать.) Если необходимо анализировать др. файлы - укажите вторым параметром расширение.

Примеры коммандных строк запуска скрипта:
exif_stat.pl - ищет начиная с текущей папки файлы CR2
exif_stat.pl e:\ - ищет начиная с корня E файлы CR2
exif_stat.pl . jpg - ищет начиная с текущей папки файлы jpg

Во время работы на экран выводятся обрабатываемые файлы.
Результат записывается в файл exif_rep.txt.
В следующий запуск (для др. архива) скрипт подхватит статистику из
exif_rep.txt, дополнит ее новыми данными и перезапишет отчет.

Upd: Статья также доступна здесь: http://byandy.livejournal.com/6515.html. (Получилось избежать ненужного в данном случае форматирования и искажения кода и таблицы.)

Вроде бы все.
Ответить с цитированием
 

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Реклама:



Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Хостинг предоставлен 100mb.ru
vBulletin Skin developed by: vBStyles.com
© Copyright 2005 - 2011