De esto ya hemos hablado en alguna ocasión,de los metadatos pero los de los mp3,id3tags, en esta ocasión hablamos de Exif para las imágenes:
Mas informacion
Bien se o pienso que existen muchas herramientas para hacer esto desde la shell de linux,pero yo cree un script para hacer esto:
Veamos:
Primero instalamos las dependencias:
sudo cpan Data::Dumper
sudo cpan Image::EXIF
Ahora bajamos el script:
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
#!/usr/bin/env perl | |
use strict; | |
use Image::EXIF; | |
use Data::Dumper; | |
use warnings; | |
use feature qw { switch say}; | |
my ($shell,$imagen,$prompt_exif,$exif,$directorio) = ("","","exif> ",undef,""); | |
# Shell | |
do { | |
$prompt_exif = "exif ($imagen)> " if ($imagen); | |
print $prompt_exif; | |
given ($shell) { | |
when (/^use/) { | |
define_imagen($shell); | |
} | |
when ("dump") { | |
dumpear() if ($imagen); | |
} | |
when ("imagen") { | |
ver_imagen() if ($imagen); | |
} | |
when ("camara") { | |
ver_camara() if ($imagen); | |
} | |
when ("ver") { | |
ver() if ($imagen); | |
} | |
when (/^cd/) { | |
cambiar_directorio($shell); | |
} | |
when ("help") { | |
help(); | |
} | |
when (/^ls/) { | |
ls($shell); | |
} | |
when ("exit") { | |
say ""; | |
exit(); | |
} | |
} | |
} while (chomp($shell = <STDIN>)); | |
sub cambiar_directorio { | |
say ""; | |
$directorio = $_[0]; | |
$directorio =~ s/^cd//; | |
$directorio = trim($directorio); | |
if (-e $directorio) { | |
chdir($directorio) | |
} else { | |
say "No existe $directorio"; | |
} | |
} | |
sub ver { | |
system ("xdg-open "."'".$imagen."'"." &"); | |
} | |
sub dumpear { | |
say ""; | |
my $all = $exif->get_all_info(); | |
print $exif->error ? $exif->errstr : Dumper($all); | |
say "Press enter"; | |
} | |
sub help { | |
say ""; | |
say "Uso :"; | |
say "help <Muestra este menu>\n"; | |
say "exit <Salir>\n"; | |
say "ls <Lista las imagenes disponibles>\n"; | |
say " -d <Lista los dirctorios disponibles>"; | |
say "cd dir <Cambia de directorio>\n"; | |
say "use imagen <Usamos nueva imagen>\n"; | |
say "dump <ver toda la informacion>\n"; | |
say "imagen <Muestra informacion de la imagen>\n"; | |
say "camara <Muestra informacion de la camara>\n"; | |
say "ver <Abre imagen en visor>\n"; | |
say "Press enter"; | |
} | |
sub ver_imagen { | |
say ""; | |
my $imagen_info = $exif->get_image_info(); | |
if ($imagen_info) { | |
foreach (keys $imagen_info) { | |
print $_ . " : " . $imagen_info->{$_} . "\n"; | |
} | |
} else { | |
say "Sin datos"; | |
} | |
say "Press enter"; | |
} | |
sub ver_camara { | |
say ""; | |
my $camara_info = $exif->get_camera_info(); | |
if ($camara_info) { | |
foreach (keys $camara_info) { | |
print $_ . " : " . $camara_info->{$_} . "\n"; | |
} | |
} else { | |
say "Sin datos"; | |
} | |
say "Press enter"; | |
} | |
sub ls { | |
say ""; | |
my $comando = shift; | |
if($comando =~ /-[d]$/) { | |
directorios(); | |
} else { | |
archivos(); | |
} | |
} | |
sub directorios { | |
my $dir = "."; | |
opendir(my $recorrer,$dir) || die "Error $! \n"; | |
while (readdir $recorrer) { | |
if (-d $dir . "/" . $_) { | |
if ($_ !~ /^\./) { | |
say $_; | |
} | |
} | |
} | |
closedir $recorrer; | |
say "Press enter"; | |
} | |
sub archivos { | |
my $dir = "."; | |
opendir(my $recorrer, $dir) || die "Error :( $! \n"; | |
while(readdir $recorrer){ | |
if (-f $dir . "/" . $_) { | |
given ($_) { | |
when (/.*jpg/) { | |
say $_; | |
} | |
when (/.*jpeg/) { | |
say $_; | |
} | |
} | |
} | |
} | |
closedir $recorrer; | |
say "Press enter"; | |
} | |
sub define_imagen { | |
say ""; | |
$imagen = $_[0]; | |
$imagen =~ s/^use//; | |
$imagen = trim($imagen); | |
if (-e $imagen) { | |
$exif = new Image::EXIF; | |
$exif->file_name($imagen); | |
} else { | |
$imagen = ""; | |
say "No existe el archivo"; | |
} | |
say "Press enter"; | |
} | |
sub trim($) | |
{ | |
my $string = shift; | |
$string =~ s/^\s+//; | |
$string =~ s/\s+$//; | |
return $string; | |
} | |
=head LICENSE | |
This library is free software; you can redistribute it and/or modify it under | |
the terms of the GNU Library General Public License as published by the Free | |
Software Foundation; either version 2.1 of the License, or (at your option) any | |
later version. | |
=cut |
Creamos un archivo y pegamos el script en perl,por ejemplo:
vim exif_data.pl
Ahora vamos a moverlo a ejecutarlo así:
perl exif_data.pl
o así:
chmod +x exif_data.pl
y
./exif_data.pl
Como ven es una shell,asi que solo escriben help:
Vemos las opciones y por ejemplo usamos:
ls
use imagen
imagen
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.