세로사진 회전문제 해결방법
질문답변 게시판에 올렸다가 팁자료실에도 다시 한번 올립니다.
모바일에서 계속 테스트를 하는데, 세로사진의 경우 업로드를 하면 옆으로 다 누워버려서 여간 불편한게 아니더군요.
인터넷 검색하여 소스를 찾았는데,
bbs/write_update.php 소스에 삽입할 수 있도록 수정하였습니다.
========================
기존
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);
위의 문구를 찾으셔서 아래의 소스로 덮어씌우기 하시면 됩니다.
/////////////////////////////////////////////
// 이 부분부터는 세로사진 정상적으로 출력되도록 회전 수정하는 부분
$exifData = exif_read_data($tmp_file);
if($exifData['Orientation'] == 6) {
// 시계방향으로 90도 돌려줘야 정상인데 270도 돌려야 정상적으로 출력됨
$degree = 270;
}
else if($exifData['Orientation'] == 8) {
// 반시계방향으로 90도 돌려줘야 정상
$degree = 90;
}
else if($exifData['Orientation'] == 3) {
$degree = 180;
}
if($degree) {
if($exifData[FileType] == 1) {
$source = imagecreatefromgif($tmp_file);
$source = imagerotate ($source , $degree, 0);
imagegif($source, $dest_file);
}
else if($exifData[FileType] == 2) {
$source = imagecreatefromjpeg($tmp_file);
$source = imagerotate ($source , $degree, 0);
imagejpeg($source, $dest_file);
}
else if($exifData[FileType] == 3) {
$source = imagecreatefrompng($tmp_file);
$source = imagerotate ($source , $degree, 0);
imagepng($source, $dest_file);
}
imagedestroy($source);
}
else {
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);
}
// 세로사진 처리 끝 //////////////////////////////////////////
위 소스는
업로드한 사진의 촬영각도를 파악하여 정상적인 회전각도를 계산한 후 서버에 저장하는 소스입니다.
일단 제 핸드폰(아이폰)과 카메라 사진에서 테스트 해보니 잘 작동됩니다.
모바일에서 계속 테스트를 하는데, 세로사진의 경우 업로드를 하면 옆으로 다 누워버려서 여간 불편한게 아니더군요.
인터넷 검색하여 소스를 찾았는데,
bbs/write_update.php 소스에 삽입할 수 있도록 수정하였습니다.
========================
기존
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);
위의 문구를 찾으셔서 아래의 소스로 덮어씌우기 하시면 됩니다.
/////////////////////////////////////////////
// 이 부분부터는 세로사진 정상적으로 출력되도록 회전 수정하는 부분
$exifData = exif_read_data($tmp_file);
if($exifData['Orientation'] == 6) {
// 시계방향으로 90도 돌려줘야 정상인데 270도 돌려야 정상적으로 출력됨
$degree = 270;
}
else if($exifData['Orientation'] == 8) {
// 반시계방향으로 90도 돌려줘야 정상
$degree = 90;
}
else if($exifData['Orientation'] == 3) {
$degree = 180;
}
if($degree) {
if($exifData[FileType] == 1) {
$source = imagecreatefromgif($tmp_file);
$source = imagerotate ($source , $degree, 0);
imagegif($source, $dest_file);
}
else if($exifData[FileType] == 2) {
$source = imagecreatefromjpeg($tmp_file);
$source = imagerotate ($source , $degree, 0);
imagejpeg($source, $dest_file);
}
else if($exifData[FileType] == 3) {
$source = imagecreatefrompng($tmp_file);
$source = imagerotate ($source , $degree, 0);
imagepng($source, $dest_file);
}
imagedestroy($source);
}
else {
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);
}
// 세로사진 처리 끝 //////////////////////////////////////////
위 소스는
업로드한 사진의 촬영각도를 파악하여 정상적인 회전각도를 계산한 후 서버에 저장하는 소스입니다.
일단 제 핸드폰(아이폰)과 카메라 사진에서 테스트 해보니 잘 작동됩니다.
댓글 3개
takumi22
12년 전
감사합니다.
12년 전
이렇게 좋은 정보를@@;;;!!!!
감사합니다 안그래도 고민하고 있었는데 ~~~
정말 감사합니다^^
감사합니다 안그래도 고민하고 있었는데 ~~~
정말 감사합니다^^
5년 전
감사합니다.
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 | 3년 전 | 4404 | ||
| 144 |
Lemios
|
11년 전 | 6680 | |
| 143 | 11년 전 | 13446 | ||
| 142 |
|
11년 전 | 6099 | |
| 141 | 11년 전 | 5446 | ||
| 140 | 11년 전 | 6476 | ||
| 139 | 11년 전 | 6579 | ||
| 138 | 11년 전 | 12127 | ||
| 137 | 11년 전 | 9985 | ||
| 136 | 11년 전 | 7129 | ||
| 135 |
skaxoddl
|
11년 전 | 9791 | |
| 134 | 11년 전 | 7511 | ||
| 133 | 11년 전 | 7354 | ||
| 132 | 11년 전 | 5413 | ||
| 131 | 11년 전 | 9677 | ||
| 130 | 11년 전 | 5251 | ||
| 129 | 11년 전 | 14678 | ||
| 128 | 11년 전 | 11965 | ||
| 127 | 11년 전 | 9745 | ||
| 126 | 11년 전 | 9708 | ||
| 125 | 11년 전 | 6267 | ||
| 124 | 11년 전 | 7684 | ||
| 123 | 11년 전 | 5750 | ||
| 122 | 11년 전 | 5555 | ||
| 121 | 11년 전 | 8456 | ||
| 120 | 11년 전 | 7777 | ||
| 119 | 11년 전 | 11891 | ||
| 118 | 12년 전 | 9395 | ||
| 117 | 12년 전 | 7707 | ||
| 116 | 12년 전 | 6709 | ||
| 115 |
|
12년 전 | 6826 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기