웹마스터 팁
모바일 사진 자동 회전 적용방법
2014.02.11 13:12
mobileex 에서만 되는 방법만 있어,
제가 한 방법을 적어봅니다.
저는 imageprocess module 에 image rotate 기능을 추가해서, 이미지 압축 처리할때, image orientation 정보를 이용해서
자동으로 회전하는 부분을 처리하였습니다.
if($file){ if($ext == "jpg" || $ext == "jpeg"){ $image = imagecreatefromjpeg($file); }else if($ext == "png"){ $image = imagecreatefrompng($file); } else if($ext == "bmp" || $ext == "wbmp"){ $image = imagecreatefromwbmp($file); }else if($ext == "gif"){ $image = imagecreatefromgif($file); } $exif = exif_read_data($file); if(!empty($exif['Orientation'])) { switch($exif['Orientation']) { case 8: $image = imagerotate($image,270,0); break; case 3: $image = imagerotate($image,180,0); break; case 6: $image = imagerotate($image,-90,0); break; } if($ext == "jpg" || $ext == "jpeg"){ imagejpeg($image,$file); } else if($ext == "png"){ imagepng($image,$file); }else if($ext == "bmp" || $ext == "wbmp"){ imagewbmp($image,$file); }else if($ext == "gif"){ imagegif($image,$file); } } }
위에 코드를 imageprocess.controller.php 파일에
$ext = strtolower(substr(strrchr($args->source_filename,'.'),1));
소스 다음에 추가하시면, image orientation 되어 있는 파일이 자동으로 회전되어 올라가게 됩니다.
테스트 mobile 은 갤럭시s3, g2 기종으로 찍은 사진으로 해봤네요..
imageprocess module 설치되어 있으면, 기존 xe board 에서 pc / mobile 지원이 됩니다.
댓글 8
-
몽실아빠
2014.02.11 13:23
-
몽실아빠
2014.02.11 22:10
돌려진 사진의 경우 회전을 시켜주는 것 같은데 리사이즈 및 워터마크처리 작업을 하지 않는듯 합니다. 호스팅 이용을 하다보니 리사이즈가 안되면 곤란해서요.
-
더뿌
2014.02.11 23:09
저는 리사이즈는 정상적으로 작동하고 있습니다 워터마크는 써보지않아서 모르겠습니다만 다만 exif 정보가 유실되는문제는 있는거 같네요 -
몽실아빠
2014.02.11 23:32
네. 회원 한분의 게시물 중 한장이 이미지프로세서모듈에서 리사이즈와 워터마크작업이 안된채 업로드가 되어 있었습니다. 정상처리된 사진이 있고 또 추가로 처리되지 않은 원본사진이 있었던 것으로 보입니다.
여러사진 중 하나의 사진이 이미지프로세서작업이 되지 않은 원본사진 하나가 추가로 업로드 되는 듯한 상황으로 판단이 됩니다.
일단 조금더 모니터링 해 보고 다시 말씀드릴게요.
-
더뿌
2014.02.11 23:36
해당 코드를
//여기부터 리사이즈 부분 이전에 넣으면
file 회전 후 리사이즈, 워터마크가 삽입되네요..
exif 정보는 유실되는건 어쩔 수 없는 듯 하네요..
-
몽실아빠
2014.02.12 09:01
네. 코드위치 이동해 보고 모니터링 해 볼게요~~~ 감사합니다.
-
몽실아빠
2014.02.12 21:49
랜덤하게 리사이즈 및 워터마크 작업이 누락되는 사진이 생기네요.
-
Omega3
2014.02.17 18:40
이런 정보 아주 좋아요! :)
오호~~ 모바일을 스케치북5 스킨으로 다시 바뀐뒤 고민이 사진 방향 인식 문제였는데 적용해 보겠습니다!