java, spring

[Spring] 썸네일 이미지 생성

isaac.kim 2021. 8. 24.
728x90
반응형

[Spring] 썸네일 이미지 생성

 

도움이 되셨다면 광고 한 번 클릭 부탁드립니다. 한 번의 클릭이 제게 큰 힘이 된답니다!^^

 

이전 글

2021.08.24 - [Spring] - [Spring] 파일 업로드, 파일명 중복 방지를 위한 UUID 적용

2021.08.24 - [Spring] - [Spring] 년월일 폴더 생성, 날짜 폴더 생성

2021.08.24 - [Spring] - [Spring] 파일 확장자, 파일 사이즈 확인하여 파일 업로드 제한하기

2021.08.23 - [Spring] - [Spring] Ajax를 이용하는 파일 업로드

2021.08.22 - [Spring] - [Spring] 파일 업로드 설정하기 (xml방식, Java방식)

 

저장되는 이미지 파일의 썸네일 생성

maven 저장소에서 'Thumbnailator' 라이브러리를 pom.xml에 추가합니다.

 

이미지 파일의 판단

파일 업로드에서 Ajax로 사용하는 호출은 반드시 브라우저를 통해 들어오는 것이 아니므로 확인할 필요가 있습니다. 서버에 업로드된 파일은 조금 시간이 걸리더라도 파일 자체가 이미지인지 정확히 체크한 뒤 저장하는 것이 좋습니다.

 

업로드되는 파일이 이미지 타입인지 검사하는 메서드를 추가합니다.

 

UploadController 클래스의 일부

 

만일 이미지 타입이면 썸네일을 생성하도록 코드를 수정합니다.

 

UploadController 클래스의 일부

@PostMapping("/uploadAjaxAction")
	public void uploadAjaxPost(MultipartFile[] uploadFile) {
		String uploadFolder = "C:\\storage";
		// make folder
		File uploadPath = new File(uploadFolder, getFolder());
		log.info("upload path : "+uploadPath);
		
		if(uploadPath.exists() == false) {
			uploadPath.mkdirs();
		} // make yyy/MM/dd folder
		
		for(MultipartFile multipartFile : uploadFile) {
			log.info("---------------------------------------");
			log.info("Upload File Name : "+multipartFile.getOriginalFilename());
			log.info("Upload File Size : "+multipartFile.getSize());
			
			String uploadFileName = multipartFile.getOriginalFilename();
			// IE has file path
			uploadFileName = uploadFileName.substring(uploadFileName.lastIndexOf("\\")+1);
			log.info("only file name : " + uploadFileName);
			
			UUID uuid = UUID.randomUUID();
			uploadFileName = uuid.toString() + "_" + uploadFileName;

			try {
				//File savefile = new File(uploadFolder, uploadFileName);
				File saveFile = new File(uploadPath, uploadFileName);
				
				multipartFile.transferTo(saveFile);
				
				// check image type file
				if (checkImageType(saveFile)) {
					FileOutputStream thumbnail = new FileOutputStream( 
									new File(uploadPath, "s_"+uploadFileName) );
					Thumbnailator
					.createThumbnail(multipartFile.getInputStream(), thumbnail, 100, 100);
				}
				
			} catch (Exception e) {
				log.error(e.getMessage());
			} // end catch
		} // end for
	}

Thumbnailator는 InputStream과 java.io.File 객체로 파일을 생성할 수 있고, 사이즈에 대한 파라미터로 width와 height를 지정할 수 있습니다.

 

이미지 파일 업로드 후 썸네일 생성 확인하기

 

's_'가 붙은 썸네일 파일이 생성된 것을 확인할 수 있습니다.

 


이번 포스팅에서는 Spring 썸네일 이미지 생성하는 방법에 대해 알아보았습니다.

 

도움이 되셨다면 광고 한 번 클릭 부탁드립니다. 한 번의 클릭이 제게 큰 힘이 된답니다!^^
728x90
반응형