SSISO Community

시소당

[JAI] 썸네일 이미지 예제소스

썸네일 이미지 생성 소스

-------------------------------------------------------------

이미지파일 업로드 자바파일 컴파일후 패키지실행

-------------------------------------------------------------

 

package ch14;
import java.io.File;
import java.io.IOException;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Thumbnail
{
   public Thumbnail() {}
 
   public static void createImage(String loadFile, String saveFile,int zoom)
    throws IOException //썸네일 이미지를 생성하는 메서드
 { 
  
   File  save = new File(saveFile);  //썸네일 이미지 파일
   RenderedOp  rOp = JAI.create("fileload", loadFile);  //loadFile는 원본 이미지파일 RenderedOp 객체생성
       BufferedImage im = rOp.getAsBufferedImage();   //BufferedImage 객체를 얻어옴
       
       if(zoom <= 0) zoom = 1;     //zoom이 5이면 원본이미지의 1/5 크기가 된다.
       
       int width = im.getWidth()  / zoom;
       int height = im.getHeight() / zoom;
   
   BufferedImage thumb = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  //메모리에 이미지 공간을 생성
   Graphics2D  g2 = thumb.createGraphics();   //BufferedImage로 부터 Graphics2D객체를 얻어냄
      
   g2.drawImage(im, 0, 0, width, height, null);  //메모리의 이미지공간에 원본 이미지를 가로 width, 세로 height 크기로 그린다.
      
   ImageIO.write(thumb, "jpg", save);     //메모리에 그린이미지를 파일로 저장 
 } 
}

 

 

-------------------------------------------------------------

이미지파일 업로드 폼양식

-------------------------------------------------------------

 

<%@ page contentType="text/html;charset=euc-kr"%>

<html>
<head>
<title>썸네일(Thumbnail)이미지 예제</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>

<body>
<form name="fileForm" method="post" enctype="multipart/form-data" action="thumbnailPro.jsp">
 원본이미지:
 <input type="file" name="image"><br>
 <input type="submit" value="썸네일이미지 만들기"><br>
</form>
</body>
</html>

 

 

-------------------------------------------------------------

썸네일 이미지 생성

-------------------------------------------------------------

 

<%@ page contentType="text/html;charset=euc-kr"%>
<%@ page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@ page import="ch14.Thumbnail"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>

<%
String realFolder = "";//웹 어플리케이션상의 절대 경로

//파일이 업로드되는 폴더를 지정한다.
String saveFolder = "thumbnail";
String encType = "euc-kr"; //엔코딩타입
int maxSize = 5*1024*1024;  //최대 업로될 파일크기 5Mb

ServletContext context = getServletContext();
//현재 jsp페이지의 웹 어플리케이션상의 절대 경로를 구한다
realFolder = context.getRealPath(saveFolder); 

try
{
   MultipartRequest multi = null;
  
   //전송을 담당할 콤포넌트를 생성하고 파일을 전송한다.
   //전송할 파일명을 가지고 있는 객체, 서버상의 절대경로,최대 업로드될 파일크기, 문자코드, 기본 보안 적용
   multi = new MultipartRequest(request,realFolder,maxSize,encType,new DefaultFileRenamePolicy());
  
   Enumeration files = multi.getFileNames();
   int zoom=5;
   //파일 정보가 있다면
   while(files.hasMoreElements()){
    //input 태그의 속성이 file인 태그의 name 속성값 :파라미터이름
      String name = (String)files.nextElement();
  
   //서버에 저장된 파일 이름
      String filename = multi.getFilesystemName(name);
  
      String orgFileName= realFolder+"\\"+filename;
      String thumbFileName= realFolder+"\\small"+filename;
   Thumbnail.createImage(orgFileName, thumbFileName, zoom);
   %>

   원본파일 저장경로및 파일명: <%=orgFileName%><br>
    <img src="<%=orgFileName%>" border="0"><br><br><br>
    "썸네일 이미지 저장경로및 파일명: "<%=thumbFileName%><br>
       <img src="<%=thumbFileName%>" border="0">

<%
      }
}catch(IOException ioe){
 ioe.printStackTrace();
}catch(Exception ex){
 ex.printStackTrace();
}
%>


1385 view

4.0 stars