반응형
썸네일은, 원래 이미지보다 작은 이미지를 뜻하는 말로, 작은 이미지를 이용하여 이미지 검색을 빨리 할 수 있는 일반 문자열의 인덱스와 비슷한 기능을 한다.
📌썸네일 이미지 실습 준비
- JAI (Java Advanced Imaging) API 다운로드 및 설치
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html
에서 다운로드 받을 수 있으며 <Accept License Agreement> 옵션 버튼을 체크하고 다운로드 하여 C:\jsp2.3 디렉터리에 다운로드한다.
설치 후 디렉터리에서 jai_codec.jar, jai_core.jar 파일을 복사하여 자신이 만든 프로젝트 밑에 "WEB-INF\lib" 디렉터리에 jai_codec.jar, jai_core.jar 파일을 붙인다. - 섬네일 이미지를 만들기 위해서 이미지 파일을 업로드 하기 위해 추가로 전에 파일 업로드 때도 다운로드 받았던 cos.jar 라이브러리를 마찬가지로 lib 디렉터리에 추가한다.
- webapp 폴더 내에 이미지 파일을 올릴 image폴더를 생성해준다.
📌썸네일 이미지 실습
문법에 대한 추가적인 설명은 하지 않을 것이다. 그냥 예제를 보면서 익히도록만 하자.
thumbnailForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>썸네일 이미지 폼</title>
</head>
<body>
<!-- <form> 태그의 enctype 속성을 통해 대용량 파일을 업로드 가능하게 했습니다. -->
<form action="thumnailAction.jsp" method="post" enctype="multipart/form-data">
이미지 파일 : <input type="file" name="filename"></td>
<input type="submit" value="전송">
</form>
</body>
</html>
thumbnail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.awt.Graphics2D"%>
<%@page import="java.awt.image.renderable.ParameterBlock"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@page import="javax.media.jai.JAI"%>
<%@page import="javax.media.jai.RenderedOp"%>
<%@page import="javax.imageio.ImageIO"%>
<%@page import="java.util.Enumeration"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="java.io.*"%>
<%
ServletContext context = getServletContext();
String imagePath=context.getRealPath("image");
int size = 10 * 1024 * 1024; // 업로드 사이즈 제한 10M 이하
String filename = "";
try{
// MultipartRequest 클래스를 생성하여 reqest을 통해 Form에서 업로드한 파일을 uploadPath 변수에 지정한 경로에 저장합니다.
MultipartRequest multi = new MultipartRequest(request, imagePath, size,
"utf-8", new DefaultFileRenamePolicy());
// Enumeration 타입을 통해 저장된 파일명을 files 변수에 담습니다.
Enumeration files = multi.getFileNames();
// 첫번째 파일명을 가져옵니다.
String file = (String)files.nextElement();
// getFilesystemName("파일 값") 통해 파일명을 통해 실제 업로드된 파일명을 가져옵니다.
fileName = multi.getFilesystemName(file);
}catch(Exception e){
e.printStackTrace();
}
// 이 클래스에 변환할 이미지를 담습니다. ( 이미지는 ParameterBlock 통해서만 담을 수 있습니다. )
ParameterBlock pd = new ParameterBlock();
pd.add(imagePath + "/" + fileName );
RenderedOp rOp = JAI.create("fileload", pd);
BufferedImage bi = rOp.getAsBufferedImage(); // 불러올 이미지를 BufferedImage에 담습니다.
// thumb라는 이미지 버퍼를 생성합니다. 이미지 버퍼 사이즈는 100 * 100 으로 설정합니다.
BufferedImage thumb = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
// thumb라는 이미지 버퍼에 원본 이미지를 정해진 버퍼 사이즈인 100 * 100 사이즈에 담아 그립니다.
Graphics2D g = thumb.createGraphics();
g.drawImage(bi, 0, 0, 100, 100, null);
// 출력할 위치와 파일 이름을 설정한 후 썸네일 이미지를 생성합니다. ( 확장자는 jpg입니다. )
File file = new File(uploadPath + "/sm_"+fileName);
ImageIO.write(thumb, "jpg", file);
%>
<html>
<head>
<title>파일 썸네일 예제</title>
</head>
<body>
원본 이미지<br />
<img src="upload/<%=fileName %>" /><br /><br />
썸네일 이미지<br />
<img src="upload/sm_<%=fileName %>" /><br /><br />
</body>
</html>
반응형
'JSP & Servlet > 개념' 카테고리의 다른 글
[JSP] JDBC 연동 (MySQL) - (1) (0) | 2022.04.24 |
---|---|
[JSP] 메일 전송 (0) | 2022.04.11 |
[JSP] 파일 업로드 (COS 라이브러리 사용) (0) | 2022.04.06 |
[JSP & Servlet] JSP웹 오류페이지 예외처리 (0) | 2022.04.06 |
[Servlet] 쿠키(Cookie) - 사용자 화면 설정 정보 유지 (0) | 2022.04.06 |