3 Réponses :


2
votes

Je vous recommande vivement d'utiliser Phil Harvey's PROFOOL . C'est complet et bien documenté. En outre, il ne lit pas la totalité de l'image dans la mémoire et, selon la documentation, vous pouvez obtenir les informations exif de l'image simplement en lui faisant passer une poignée de fichier à un fichier d'image ouvert. Donc, il ne devrait pas perdre beaucoup de mémoire.


3 commentaires

@Kinopiko - Si je devais aller cette route, que suggéreriez-vous que j'utilise pour redimensionner les images que nos utilisateurs téléchargent au lieu de Perl Magick? Je dois déjà charger Perl Magick et l'image pour convertir la photo téléchargée d'origine en un certain nombre de tailles différentes pour une utilisation sur notre site. Je suis ouvert à d'autres alternatives mais je veux m'assurer que je ne charge pas 5 modules Perl et de lire l'image plusieurs fois lorsque 1 ou 2 modules pourraient faire l'affaire avec une utilisation beaucoup moins de mémoire. Merci!


Oh, désolé, j'ai mal compris. Je pensais que vous vouliez dire la mémoire prise par le module lui-même plutôt que le chargement multiple de l'image. Exifool est assez rapide pour numériser des images, donc je doute qu'il lit toute l'image dans la mémoire.


J'ai vérifié la documentation et on dirait que Prefool peut fonctionner même avec un fichier ouvert. J'ai changé la réponse pour refléter cela.



9
votes
> cat im.pl
use Image::Magick;
my $image = Image::Magick->new();
$image->Read('/home/rjp/2009-02-18/DSC00343.JPG');
my $a = $image->Get('format', '%[EXIF:*]'); # two arguments
my @exif = split(/[\r\n]/, $a);
print join("\n", @exif);
> perl im.pl
exif:ColorSpace=1
exif:ComponentsConfiguration=...
exif:Compression=6
exif:CustomRendered=0
exif:DateTime=2009:02:13 16:18:15
exif:DateTimeDigitized=2009:02:13 16:18:15
...
That seems to work. Version: ImageMagick 6.3.7 06/04/09 Q16 http://www.imagemagick.org

2 commentaires

@RJP merci! Fonctionne comme un charme. Et dans le temps record aussi.


Comment avez-vous compris cela? L'API est tellement obtuse!



0
votes

edit: @RJP a montré comment accéder à toutes les informations plutôt que des balises individuelles. Voici comment mettre les données dans un hachage: xxx


2 commentaires

En fait, vous ne le faites pas. Vous pouvez demander toutes les balises comme une seule chaîne en spécifiant 'Exif: *'. Pour moi, cela est préférable car je vous convertitez facilement la chaîne retournée de toutes les balises Exif dans un hachage à partir de laquelle je peux utiliser n'importe quelle balise que je souhaite.


@Russel C. Ouais, je sais. Notez mon vote pour et commentez le message de @ RJP.