2013년 2월 15일 금요일

[ jsp ][ servlet ] ipad 업로드 파일 회전

아이패드에서 찍은 사진을 업로드 받은뒤 웹에 뿌려주면
아이패드에서 찍은 방향에 따라 사진이 회전되서 보인다.
아이패드에서 볼때는 제대로 보이는데..
그래서 어떤방향으로 찍더라도 웹에서도 윗방향이 정확히 보이게 하기위해
꼼수라해야할지 모르나 아래와 같은 방법으로 해결했다.

1.하기 사이트에서 라이브러리를 받아서 lib에 설치
http://code.google.com/p/metadata-extractor/downloads/detail?name=metadata-extractor-2.6.4.zip

2.화면에 뿌려주기전 서블렛에서 하기 함수에 파일을 넘겨주고
  (jpeg의 메타데이터를 뽑아서 orientation 부분을 체크)

private String getOriFromImage(File image) {
String retStr = "";

try {

Metadata metadata = JpegMetadataReader.readMetadata(image);

// iterate through metadata directories

Iterable<Directory> directories = metadata.getDirectories();
for (Directory directory : metadata.getDirectories()) {
for (Tag tag : directory.getTags()) {
String strTagName = tag.getTagName();
if (strTagName.equals("Orientation")) {
String strDesc = tag.getDescription();
if (strDesc.contains("90")) {
retStr="90";
}else if(strDesc.contains("180")){
retStr="180";
}else if(strDesc.contains("270")){
retStr="270";
}
}
}
}
} catch (Exception e) {
                  //각자 알아서 처리
}
return retStr;
}
 넘겨받은 값을 request에 설정

3.넘겨받은 값을 이미지에 class 대응


<img src="이미지 패스"
id="IMG_${cnt}_${chkcnt}" width=10px class="rot${RESULT_LIST.imgClass[chkcnt-1][cnt-1]}">

4. CSS설정 파일은 하기 참조
http://soatojsp.blogspot.jp/2013/02/jsp-css.html

5. 이렇게 하면, ipad에서도 다시 한번 돌아간다는 문제 점이 있는데 그건 서블릿단에서 아이패드가 아닌 경우에만
클래스명을 사용하도록 했다.

댓글 없음:

댓글 쓰기