JSP에서 이미지 리사이즈 하기
처음 구했던 소스,
품질이 너무 구리다.. 폐기;
그다음으로 구했던 소스
리샘플 퀄리티는 볼만한테 pg.grabPixels(); 이놈이 실행되는데 2분이 넘게 걸리는게 아닌가 - -;
자바누리에 어쩌면 좋겠냐고 질문을 올렸더니 P3-800에서 2-3초 내외로 실행이 끝난다고 한다
아무래도 이상해서 이리저리 해보던 결과..
컴퓨터를 껐다켰더니 잘된다-_-;;
한 1초 걸리는것 같다;;
오늘의 교훈.. XP도 별수없다.. 며칠에 한번씩은 재부팅을 해주자 ㅜㅜ
<%@ page import = "java.io.*,
java.awt.Image,
java.awt.Graphics2D,
java.awt.geom.AffineTransform,
java.awt.image.BufferedImage,
javax.swing.ImageIcon,
com.sun.image.codec.jpeg.*"
contentType="text/html;charset=MS949"
%>
<%!
public static void createThumbnail(String orig, String thumb, int maxDim) throws Exception
{
Image inImage = new ImageIcon(orig).getImage();
int iwidth = inImage.getWidth(null);
if( maxDim > iwidth )
maxDim = iwidth;
double scale = (double)maxDim/(double)inImage.getHeight(null);
if( inImage.getWidth(null) > inImage.getHeight(null) )
scale = (double)maxDim/(double)inImage.getWidth(null);
int scaledW = (int)(scale*inImage.getWidth(null));
int scaledH = (int)(scale*inImage.getHeight(null));
BufferedImage outImage = new BufferedImage(scaledW,scaledH,BufferedImage.TYPE_INT_RGB);
AffineTransform tx = new AffineTransform();
if( scale < 1.0d )
tx.scale( scale, scale );
Graphics2D g2d = outImage.createGraphics();
g2d.drawImage(inImage, tx, null);
g2d.dispose();
OutputStream os = new FileOutputStream(thumb);
JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(os);
JPEGEncodeParam jep = jpeg.getDefaultJPEGEncodeParam(outImage);
jep.setQuality(1, false);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
encoder.encode(outImage, jep);
os.close();
}
%>
<%
createThumbnail("c:/inetpub/c/big.jpg","c:/inetpub/c/big_result.jpg",320);
%>
java.awt.Image,
java.awt.Graphics2D,
java.awt.geom.AffineTransform,
java.awt.image.BufferedImage,
javax.swing.ImageIcon,
com.sun.image.codec.jpeg.*"
contentType="text/html;charset=MS949"
%>
<%!
public static void createThumbnail(String orig, String thumb, int maxDim) throws Exception
{
Image inImage = new ImageIcon(orig).getImage();
int iwidth = inImage.getWidth(null);
if( maxDim > iwidth )
maxDim = iwidth;
double scale = (double)maxDim/(double)inImage.getHeight(null);
if( inImage.getWidth(null) > inImage.getHeight(null) )
scale = (double)maxDim/(double)inImage.getWidth(null);
int scaledW = (int)(scale*inImage.getWidth(null));
int scaledH = (int)(scale*inImage.getHeight(null));
BufferedImage outImage = new BufferedImage(scaledW,scaledH,BufferedImage.TYPE_INT_RGB);
AffineTransform tx = new AffineTransform();
if( scale < 1.0d )
tx.scale( scale, scale );
Graphics2D g2d = outImage.createGraphics();
g2d.drawImage(inImage, tx, null);
g2d.dispose();
OutputStream os = new FileOutputStream(thumb);
JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(os);
JPEGEncodeParam jep = jpeg.getDefaultJPEGEncodeParam(outImage);
jep.setQuality(1, false);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
encoder.encode(outImage, jep);
os.close();
}
%>
<%
createThumbnail("c:/inetpub/c/big.jpg","c:/inetpub/c/big_result.jpg",320);
%>
품질이 너무 구리다.. 폐기;
그다음으로 구했던 소스
<%@ page import="java.io.*,
java.awt.*,
java.awt.image.*,
javax.swing.*,
com.sun.image.codec.jpeg.*"
contentType="text/html;charset=MS949" %>
<%!
public static void createThumbnail(String soruce, String target, int targetW) throws Exception
{
Image imgSource = new ImageIcon(soruce).getImage();
int oldW = imgSource.getWidth(null);
int oldH = imgSource.getHeight(null);
int newW = targetW;
int newH = (targetW * oldH) / oldW;
Image imgTarget = imgSource.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
int pixels[] = new int[newW * newH];
PixelGrabber pg = new PixelGrabber(imgTarget, 0, 0, newW, newH, pixels, 0, newW);
pg.grabPixels();
BufferedImage bi = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_RGB);
bi.setRGB(0, 0, newW, newH, pixels, 0, newW);
FileOutputStream fos = new FileOutputStream(target);
JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam jep = jpeg.getDefaultJPEGEncodeParam(bi);
jep.setQuality(1, false);
jpeg.encode(bi, jep);
fos.close();
}
%>
<%
createThumbnail("c:/inetpub/c/big.jpg","c:/inetpub/c/big_result.jpg",320);
%>
java.awt.*,
java.awt.image.*,
javax.swing.*,
com.sun.image.codec.jpeg.*"
contentType="text/html;charset=MS949" %>
<%!
public static void createThumbnail(String soruce, String target, int targetW) throws Exception
{
Image imgSource = new ImageIcon(soruce).getImage();
int oldW = imgSource.getWidth(null);
int oldH = imgSource.getHeight(null);
int newW = targetW;
int newH = (targetW * oldH) / oldW;
Image imgTarget = imgSource.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
int pixels[] = new int[newW * newH];
PixelGrabber pg = new PixelGrabber(imgTarget, 0, 0, newW, newH, pixels, 0, newW);
pg.grabPixels();
BufferedImage bi = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_RGB);
bi.setRGB(0, 0, newW, newH, pixels, 0, newW);
FileOutputStream fos = new FileOutputStream(target);
JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam jep = jpeg.getDefaultJPEGEncodeParam(bi);
jep.setQuality(1, false);
jpeg.encode(bi, jep);
fos.close();
}
%>
<%
createThumbnail("c:/inetpub/c/big.jpg","c:/inetpub/c/big_result.jpg",320);
%>
리샘플 퀄리티는 볼만한테 pg.grabPixels(); 이놈이 실행되는데 2분이 넘게 걸리는게 아닌가 - -;
자바누리에 어쩌면 좋겠냐고 질문을 올렸더니 P3-800에서 2-3초 내외로 실행이 끝난다고 한다
아무래도 이상해서 이리저리 해보던 결과..
컴퓨터를 껐다켰더니 잘된다-_-;;
한 1초 걸리는것 같다;;
오늘의 교훈.. XP도 별수없다.. 며칠에 한번씩은 재부팅을 해주자 ㅜㅜ
'컴퓨터 얘기 > 프로그래밍' 카테고리의 다른 글
| 세션과 서브도메인 (0) | 2004/01/01 |
|---|---|
| NT 폴더공유.. (0) | 2004/01/01 |
| rs.next() (0) | 2004/01/01 |
| 프레임 나뉜 페이지에서 새로고침시 페이지 유지하기 (0) | 2004/01/01 |
| 리눅스에서 이미지관련 클래스 사용하기 (0) | 2004/01/01 |
| JSP에서 이미지 리사이즈 하기 (0) | 2004/01/01 |