java 파일이 누워서 업로드 됨
2023.03.28
우리 회사는 문자발송 시스템 회사다.
포토문자를 보냈는데 문자가 누워서 발송된다고 문의가 들어왔다.
확인해보니 진짜 누워있다.
이미지 리사이징 하는 부분에서 에러가 나는것 같아서 확인해봤는데 자바에서 파일을 읽어올때부터 파일에 가로 세로 사이즈가 바뀌어서 들어왔다.
모바일에서 찍은 이미지는 그럴수도 있다그런다.
private BufferedImage makeThumbnail(MultipartFile mFile) throws Exception {
File imageFile = multipartFileToFile(mFile); //multipartFile To File
int orientation = 1;
Metadata metadata;
Directory directory;
try {
metadata = ImageMetadataReader.readMetadata(imageFile);
directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
if(directory != null){
orientation = directory.getInt(ExifIFD0Directory.TAG_ORIENTATION);
}
}catch (Exception e) {
orientation=1;
}
BufferedImage bfImage = ImageIO.read(imageFile);
switch (orientation) {
case 1:
break;
case 3:
bfImage = Scalr.rotate(srcImg, Scalr.Rotation.CW_180, null);
break;
case 6:
bfImage = Scalr.rotate(srcImg, Scalr.Rotation.CW_90, null);
break;
case 8:
bfImage = Scalr.rotate(srcImg, Scalr.Rotation.CW_270, null);
break;
default:
orientation = 1;
break;
}
if (imageFile.exists() && !imageFile.delete()) {
throw new IOException("Failed to delete image file: " + imageFile.getAbsolutePath());
}
return srcImg;
}
회전 정보를 가져와서 맞춰주는 방식으로 해결했다.
3시간 정도 찾은것같다.
재미있었다.
-끝-