2016-01-24 42 views
3

因此,我試圖瞭解如何在上傳圖片和上傳圖片後修復圖片方向。我很難知道如何通過這樣做來獲得他們的exif信息。如何在使用php上傳圖片時修復iOS圖片方向問題,並且在上傳之後

$image = img_dir .$ref['filename']; 
$exif = exif_read_data($image, 0, true); 

我使用下面的這一行來顯示跨度中的圖像方向。

<?= "" . $exif['IFD0']['Orientation'] . "\n"?> 

現在,我試圖使用圖像方向根據方向翻轉圖像。例如:我有一個花的圖像,它的方向爲「6」,所以我想讓圖像根據其編號旋轉,然後顯示它。

+0

重複http://stackoverflow.com/questions/ 7489742/PHP-讀EXIF數據和調整取向 – pauljeba

回答

0

這是我在我的網站上做的事情。我相信這會幫助你解決問題。

的過程中類似的2個步驟完成: 1.閱讀取向 2.旋轉或翻轉圖像

function check_jpeg($f, $fix=false){ 
     if (false !== (@$fd = fopen($f, 'r+b'))) 
     { 
        if (fread($fd,2)==chr(255).chr(216)) 
        { 
            fseek ($fd, -2, SEEK_END); 
            if (fread($fd,2)==chr(255).chr(217)) 
            { 
             fclose($fd); 
             return true; 
            } 
            else 
            { 
             if ($fix && fwrite($fd,chr(255).chr(217))) 
             {       
              fclose($fd); 
              return true; 
             } 
             fclose($fd); 
             return false; 
            } 
        } 
        else 
        { 
            fclose($fd); 
            return false; 
        } 
     } 
     else 
     { 
        return false; 
     } 
} 
function fix_image($photo){ 
    ini_set('memory_limit', '1024M'); 
    check_jpeg($photo, true); 
    $image = @imagecreatefromjpeg($photo); 
    $exif = @exif_read_data($photo); 
    echo $exif['Orientation']; 
    if(!empty($exif['Orientation'])){ 
     switch($exif['Orientation']){ 
       case 8: 
       // means counterclockwise 90 
       $image = @imagerotate($image,90,0); 
       break; 
       case 3: 
       $image = @imagerotate($image,180,0); 
       break; 
       case 6: 
       $image = @imagerotate($image,-90,0); 
       break; 
      } 
     } 
     @imagejpeg($image,$photo); 
} 

希望這有助於