我想在我的php代碼中使用Imagick來正確定位圖像,以便我可以從它們中去除元數據並讓它們正確顯示。我想在這個帖子的方法:ImageMagick和PHP正確地旋轉圖像
Detect EXIF Orientation and Rotate Image using ImageMagick
但它無法正常工作。使用在該職位的自動旋轉功能,這是我在做什麼:
$working_image = new \Imagick();
$working_image->readImageBlob($source_data);
$working_image->setImageFormat('jpeg');
autorotate($working_image);
... some resizing code:
$working_image->resizeImage($width, $height, \Imagick::FILTER_CATROM, .7);
// get rid of metadata
$working_image->stripImage();
$working_image->writeImage(<unique filename>);
$working_image->getImageBlob();
... write out to data file to google
我們正在使用谷歌的雲計算的東西存儲文件,因此「getImageBlob」電話。
問題是這似乎不起作用。由此產生的圖像仍然面向他們的方式,但現在沒有元數據,所以標籤不會「修復」它們。
我在這裏做錯了什麼?我使用這個版本的PHP Imagick對象:
[VERSIONNUMBER] => 1673 [VERSIONSTRING] => ImageMagick的6.8.9-9 Q16 x86_64的2015年1月5日http://www.imagemagick.org
在回答你的答案:
感謝您的澄清。望着那我有問題的特定圖像之一,確定-verbose顯示多個地方定義方向:
Orientation: RightTop
exif:Orientation: 6
exif:thumbnail:Orientation: 6
,這是反映在我的調用Imagick :: getImageOrientation在PHP中,它返回「6 「值,然後導致我的代碼調用像」Imagick :: rotateImage(「#000」,180);「。問題是這些調用的圖像不變。 8 - (
核心問題是這樣的:我們每天從全國各地的MLS上獲取這些圖像,我們目前正在通過自動過程來處理它們(當前調整大小),當它們顯示在我們的網站上時,一切都很好,因爲<img
>標籤似乎很樂意解釋EXIF數據,並以正確的方向顯示圖像。但是...我們想要開始優化圖像,這意味着剝離EXIF信息,所以我需要弄清楚爲什麼Imagick-> rotateImage()不工作。
請參閱[-auto-orient](http://www.imagemagick.org/script/command-line-options.php#auto-東方) - 什麼告訴您的圖像EXIF配置文件? – lp1051
那麼,有自動定位..但我怎麼能從PHP和Imagick對象內部調用?這是一個批處理功能,目前每天處理(調整大小)數以萬計的圖像。我正在嘗試擴展此處理以修復圖像方向。至於EXIF如何進入圖像 - 我猜從任何相機正在使用 - 在我現在正在使用的測試圖像的情況下,三星SM-G900V。但我無法控制 - 這些圖像是從全國的房地產經紀人那裏收到的,涉及數以千計的可能的相機。 –
不確定它是否是拼寫錯誤,但是對於方向6(RightTop),預期的旋轉調用應該是'$ image-> rotateImage(「#000」,90);'不是180.如果是拼寫錯誤, cmdline'convert input.jpg -rotate 90 out.jpg'? – lp1051