1
我試圖旋轉上傳的圖像保存之前,基於EXIF ORIENTATION標記。iPhone的圖像方向 - 自動旋轉圖像與PHP,PEL,Image_moo
我已經單獨檢查了代碼的每個部分,一切似乎都在自己的工作。
$ new是正確的路徑和文件名。
Image_moo已被加載。
PEL(PHP EXIF Library)[http://lsolesen.github.com/pel/]已被加載。
圖像包含旋轉的EXIF數據。
我相信我得到了正確的switch語句。
該代碼不會導致任何錯誤,它只是不旋轉圖像。
我在想什麼或做錯了什麼?
馬克
$new = the file that was just uploaded
...
$ext = strtolower($path_parts['extension']);
...
if($ext == 'jpg'){
$input_jpg = new PelJpeg($new);
$exif = $input_jpg->getExif();
if($exif !== NULL){
$tiff = $exif->getTiff();
$ifd0 = $tiff->getIfd();
if($orient = $ifd0->getEntry(PelTag::ORIENTATION)){
$this->image_moo->load($new);
$orient = str_replace(' ', '', $orient);
if (($tmp = strstr($orient, 'Value:')) !== false) {
$str = substr($tmp, 6, 1);//Get the value of the ORIENTATION tag
}
$this->image_moo->load($new);
switch ($str)
{
case 8:
$this->image_moo->rotate(270);
break;
case 3:
$this->image_moo->rotate(180);
break;
case 6:
$this->image_moo->rotate(90);
break;
case 1:
break;
}
$this->image_moo->save($new, TRUE);
}
$output_jpg = new PelJpeg($new);
$output_jpg->setExif($exif);
$output_jpg->saveFile($new);
}
}
我用的是測試頁面中顯示的旋轉圖像得很好,但圖片庫未正確顯示這些。出於某種原因,它在我改變它的方向後開始工作,在旋轉'$ orient-> setValue(1);'之後將方向設置爲1。測試頁面上沒有必要執行此步驟。我一定錯過了一些東西,但至少現在起作用了。感謝您的示例代碼! – Mark
setImageOrientation基本上重置EXIF。如果將圖像旋轉90度並且EXIF說它總共旋轉90度,則它是180 – RolandasR
這非常有幫助。謝謝。 +1。 – CDR