반응형
문제코드
public String convertBinary(MultipartFile files) throws Exception{
String fileName = StringUtils.cleanPath(Objects.requireNonNull(files.getOriginalFilename())) ;
BufferedImage image = ImageIO.read(files.getInputStream());
//ImageBuffer Null Check
if (image == null) {
throw new IllegalArgumentException("Invalid image file.");
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, fileName.substring(fileName.lastIndexOf(".") + 1), baos);
return Base64.getEncoder().encodeToString(baos.toByteArray());
return new String(Base64.encodeBase64(baos.toByteArray(), false));
}
압축 이유
ImageIO 사용 시 요청된 이미지 파일이 압축됨
이슈처리
- 동일하게 ImageIO를 사용할거라면 해당 출처처럼 qualty 정보를 설정해 이미지 원본을 유지할 수 있음
https://blog.naver.com/deersoul6662/222772307102?
- 현재 프로젝트에서는 클라이언트에서 전달한 MultipartFile을 AI Server로 전달하는 용도이며 이미지에 대한 압축과 리사이징이
필요없음
File의 InputStream을 사용해 인코딩 진행 또는 주석처리 된 files.getBytes()를 사용해 바이트 변환 후 Base64 인코딩
public String convertBinary(MultipartFile files) throws Exception{
// return Base64.getEncoder().encodeToString(files.getBytes());
String fileName = StringUtils.cleanPath(Objects.requireNonNull(files.getOriginalFilename()));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
files.getInputStream().transferTo(baos); // 원본 이미지 바이너리 데이터를 직접 Base64로 변환
String encData = Base64.getEncoder().encodeToString(baos.toByteArray());
baos.close();
return encData;
}
반응형
'Java' 카테고리의 다른 글
Spring의 탄생배경 (0) | 2024.07.06 |
---|---|
[JAVA]Reference Type Cache 기능 (2) | 2024.01.04 |
Java는 왜 Call By Value인가? (2) | 2024.01.04 |
[Spring]외장톰캣 특정 war 미로드 (0) | 2023.10.22 |
[Spring]PageRequest이용한 페이징처리 (0) | 2023.08.15 |