我目前使用Perl Magick http://www.imagemagick.org/script/perl-magick.php,圖像Magick http://www.imagemagick.org的perl接口,來處理&轉換我們網站用戶上傳的照片。我希望能夠捕捉也有些附着在這些圖片的EXIF數據中,我已經能夠找出如何使用命令行界面難懂的做到這一點使用下面的命令:如何使用PerlMagick提取EXIF數據?
/usr/bin/identify -format "%[EXIF:*]" image.jpg
它返回以下EXIF信息對於特定的照片:
exif:ApertureValue=29/8
exif:ColorSpace=1
exif:CompressedBitsPerPixel=3/1
exif:CustomRendered=0
exif:DateTime=2002:10:08 19:49:52
exif:DateTimeDigitized=2002:09:29 14:03:55
exif:DateTimeOriginal=2002:09:29 14:03:55
exif:DigitalZoomRatio=1/1
exif:ExifImageLength=307
exif:ExifImageWidth=410
exif:ExifOffset=192
exif:ExifVersion=48, 50, 50, 48
exif:ExposureBiasValue=0/1
exif:ExposureMode=0
exif:ExposureTime=1/1000
exif:Flash=24
exif:FlashPixVersion=48, 49, 48, 48
exif:FNumber=7/2
exif:FocalLength=227/32
exif:FocalPlaneResolutionUnit=2
exif:FocalPlaneXResolution=235741/32
exif:FocalPlaneYResolution=286622/39
exif:Make=Canon
exif:MaxApertureValue=12742/4289
exif:MeteringMode=5
exif:Model=Canon PowerShot S30
exif:ResolutionUnit=2
exif:SceneCaptureType=0
exif:SensingMethod=2
exif:ShutterSpeedValue=319/32
exif:Software=Adobe Photoshop 7.0
exif:WhiteBalance=0
exif:XResolution=180/1
exif:YResolution=180/1
我試着約100種,從Perl的Magick獲得此相同的結果,但無法弄清楚如何通過我使用的是相同的參數命令行使其正常工作。這裏有幾個我已經試過變化的其中沒有一個似乎已經奏效:
use Image::Magick;
my $image = Image::Magick->new;
my $exif = $image->Identify('image.jpg');
print $exif;
$image->Read('image.jpg');
$exif = $image->Get('format "%[EXIF:*]"');
print $exif;
我知道有其他的方法來提取Perl中的圖像文件的EXIF數據,但由於我們已經擁有了Perl的Magick模塊我不想通過加載額外的模塊來浪費更多的內存。我希望有人在他們的網站上有這個工作,並可以分享解決方案。在此先感謝您的幫助!
+1現在,我爲什麼沒有想到這一點。 – 2009-11-10 15:05:46
@rjp謝謝!奇蹟般有效。並且創紀錄的時間。 – 2009-11-10 15:08:01
你是怎麼解決這個問題的?該API太鈍了! – rjh 2013-02-10 22:20:22