2016-06-17 69 views
0

今天我再次與我的購物車腳本有這個小問題。當我從桌面上傳圖像時,我的圖像默認情況下會按照您希望的方式進行定向,因此,我上傳它們時,它們會正確加載。但是,當我從手機發布項目時,圖像會側面加載!PHP:旋轉圖像作爲其創建

因爲我的服務器(沒有root訪問權限來修復這個問題),所以我可以通過exif獲取方向,所以我只是想看看寬度是否小於高度,然後旋轉它們,但代碼isn工作不正常。

現在腳本暫時上傳一個文件,然後運行兩個函數在合適的文件夾中爲縮略圖和全尺寸版本創建圖像的PNG版本。它的作用是使圖像很好,問題在於,如果它們需要旋轉,它在保存圖像之前不會旋轉它們。我已經包含了我目前的功能來創建圖像,我做錯了什麼,他們沒有被旋轉?

function createFullImage($filepath, $uploadpath) { 
    list($width, $height, $original_type) = getimagesize($filepath); 
    if($original_type === 1) { 
     $imgt = "ImageGIF"; 
     $imgcreatefrom = "ImageCreateFromGIF"; 
    } elseif ($original_type === 2) { 
     $imgt = "ImageJPEG"; 
     $imgcreatefrom = "ImageCreateFromJPEG"; 
    } elseif ($original_type === 3) { 
     $imgt = "ImagePNG"; 
     $imgcreatefrom = "ImageCreateFromPNG"; 
    } else { 
     return false; 
    } 
    $old_image = $imgcreatefrom($filepath); 
    $new_image = imagecreatetruecolor($width, $height); // create new image 
    imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $width, $height, $width, $height); 
    if(height > width) { 
     $new_image = imagerotate($new_image, 90, 0); 
    } 
    $imgt($new_image, $uploadpath); 
    return file_exists($uploadpath); 
} 
+0

我看不到$ original_height和$ original_width在哪裏定義。看起來你分別稱它們爲$ height和$ width。編輯:因此,你的imagerotate永遠不會被調用((undefined> undefined)== false)。 –

+0

我忘了改變這些變量顯然。大聲笑讓我嘗試並迅速修復,並回到你身邊。編輯:我只是misstyped他們在這個功能,它的腳本權。編輯主帖子 – Kaboom

+0

嘗試擺脫完全條件,看看它是否成功地旋轉你的正常圖像。我在考慮條件是評估爲false,所以imagerotate沒有被調用。 –

回答

1

繼承人兩個工作職能。這裏是發生了什麼

3264png×2448png被翻轉之前。被翻轉後,其中有2448png×3264png。

如果圖像較寬,則其翻轉。這是一個可怕的解決方案,如果我從桌面上傳更廣泛的圖像,因爲它會翻轉,但我猜測它沒有EXIF功能。

function createThumbnail($filepath, $thumbpath, $thumbnail_width, $thumbnail_height) { 
    list($original_width, $original_height, $original_type) = getimagesize($filepath); 
    if($original_type === 1) { 
     $imgt = "ImageGIF"; 
     $imgcreatefrom = "ImageCreateFromGIF"; 
    } elseif ($original_type === 2) { 
     $imgt = "ImageJPEG"; 
     $imgcreatefrom = "ImageCreateFromJPEG"; 
    } elseif ($original_type === 3) { 
     $imgt = "ImagePNG"; 
     $imgcreatefrom = "ImageCreateFromPNG"; 
    } else { 
     return false; 
    } 
    $old_image = $imgcreatefrom($filepath); 
    $new_image = imagecreatetruecolor($thumbnail_width, $thumbnail_height); // creates new image, but with a black background 
    imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $original_width, $original_height); 
    if($original_height < $original_width) { 
     $new_image = imagerotate($new_image, -90, 0); 
    } 
    $imgt($new_image, $thumbpath); 
    return file_exists($thumbpath); 
} 

function createFullImage($filepath, $uploadpath) { 
    list($width, $height, $original_type) = getimagesize($filepath); 
    if($original_type === 1) { 
     $imgt = "ImageGIF"; 
     $imgcreatefrom = "ImageCreateFromGIF"; 
    } elseif ($original_type === 2) { 
     $imgt = "ImageJPEG"; 
     $imgcreatefrom = "ImageCreateFromJPEG"; 
    } elseif ($original_type === 3) { 
     $imgt = "ImagePNG"; 
     $imgcreatefrom = "ImageCreateFromPNG"; 
    } else { 
     return false; 
    } 
    $old_image = $imgcreatefrom($filepath); 
    $new_image = imagecreatetruecolor($width, $height); // create new image 
    imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $width, $height, $width, $height); 
    if($width > $height) { 
     $new_image = imagerotate($new_image, -90, 0); 
    } 
    $imgt($new_image, $uploadpath); 
    return file_exists($uploadpath); 
}