2014-11-02 3 views
1

표준 PHP 양식을 사용하여 일부 이미지를 업로드합니다.img 태그가 잘못된 이미지 회전

문제는 때때로 이미지가 때로는 회전 45 개도는 거꾸로되어, 내가 img 태그

<img src="http://www.example.com/image.jpg" alt=""> 

를 사용하여 일부 이미지를 표시 할 때 내가 잘못 회전을 얻을 수 있다는 것입니다. 제가

http://www.example.com/image.jpg 

액세스하여 브라우저에서 이미지를로드하면

이미지 바로 보여준다.

무엇이 문제 인 것 같으며 어떻게 해결할 수 있습니까?

+1

이미지에 회전이 있는지 확인하십시오. – Shubanker

+0

@Subhanker CSS 순환은 PHP 업로드에 영향을주지 않습니다 –

+0

이것이 Exif 오리엔테이션의 문제 일 수 있다는 것을 읽었습니다 ...하지만 어떻게이 문제를 해결할 수 있습니까? – Alex

답변

3

문제점을 발견했습니다. 제대로 표시되지 않는 이미지는 Samsung 및 iPhone과 같은 휴대 기기에서 업로드됩니다. 따라서 EXIF ​​방향은 모바일의 방향입니다.

이미지의 정확한 exif를 보려면 http://regex.info/exif.cgi에서 테스트 할 수 있습니다. Chrome이나 Firefox와 같은 브라우저에서 직접 이미지를 열어도 올바른 방향으로 이미지가 표시되지만 html img 태그를 사용하여 이미지를로드하면 exif 방향이 표시됩니다.

그래서 가장 좋은 해결책은 이미지를 업로드하기 전에 exif 방향을 확인한 다음 PHP 기능을 사용하여 올바른 방향으로 변환하는 것입니다.

function image_fix_orientation($path) 
{ 
    $image = imagecreatefromjpeg($path); 
    $exif = exif_read_data($path); 

    if (empty($exif['Orientation'])) 
    { 
     return false; 
    } 

    switch ($exif['Orientation']) 
    { 
     case 3: 
      $image = imagerotate($image, 180, 0); 
      break; 
     case 6: 
      $image = imagerotate($image, - 90, 0); 
      break; 
     case 8: 
      $image = imagerotate($image, 90, 0); 
      break; 
    } 

    imagejpeg($image, $path); 

    return true; 
} 

// For JPEG image only 
image_fix_orientation('/path/to/image.jpg');