본문 바로가기

Java

[Java] 내 이미지는 왜 압축이 되었는가?

반응형

문제코드

	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 사용 시 요청된 이미지 파일이 압축됨

이슈처리

  • 현재 프로젝트에서는 클라이언트에서 전달한 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