본문 바로가기
개발/PHP

[PHP] 사진이 회전되서 올라갈 경우. (exif_read_data 모듈 사용)

by 언제나초심. 2014. 6. 11.
반응형

 


<?php
/**
* @description 스마트폰, 카메라 등에서 사진 jpg 저장시에 
회전값이 들어갈 수 있다. 그럴 경우 변환해 주는 소스 이다.
*/
if(!function_exists('exif_read_data')){
    echo 'not defined exif_read_data. requires exif module';
    exit;
}
if(!function_exists('imagecreatefromjpeg')){
    echo 'not defined imagecreatefromjpeg.';
    exit;
}
if(!function_exists('imagerotate')){
    echo 'not defined imagerotate.';
    exit;
}


$source_path = "shot.jpg";
$temp_ext = strrchr($source_path, ".");
$temp_ext = strtolower($temp_ext);// 확장자
if(preg_match('/(jpg|jpeg)$/i',$temp_ext)
    && function_exists('exif_read_data')
    && function_exists('imagecreatefromjpeg')
    && function_exists('imagerotate')
    )
{
    $exif = exif_read_data($source_path);//<get exif data. jpeg 나 tiff 의 경우에만 갖고 있음
    $source = imagecreatefromjpeg($source_path);//<임시 리소스 생성

    //값에 따라 회전
    switch($exif['Orientation']){
        case 8 : $source = imagerotate($source,90,0); break;
        case 3 : $source = imagerotate($source,180,0); break;
        case 6 : $source = imagerotate($source,-90,0); break;
    }

    //결과 처리
    header('Content-Type: image/jpeg');
    imagejpeg($source);
    imagedestroy($source);
}
?>

 

반응형