블로그 이미지
박공명

카테고리

분류 전체보기 (99)
된장 (7)
Dev (60)
꼐..꼐임 (6)
식탐 (18)
우리 (0)
Etc (8)
개인자료 (0)
Total
Today
Yesterday



리사이징에는 jai 도 필요 없더이다..

출처는 잘 모르겠구 jai로했을때는 사이즈가 변할때 깨지는일이 있었는데

이건 갠찬네.

사이즈 변경안할때 이미지가 아닌것을 넣으면 널포인트 난다는것에 주의하자.

참 쉽쥬?


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.ImageIcon;

// com.sun.image.codec.jpeg package is included in sun and ibm sdk 1.3
import com.sun.image.codec.jpeg.*;

public class ImageUtil{
 public static final int RATIO = 0;
 public static final int SAME = -1;
 
 public  void resize(File src, File dest, int width, int height) throws IOException {
  Image srcImg = null;
  String suffix = src.getName().substring(src.getName().lastIndexOf('.')+1).toLowerCase();
  if (suffix.equals("bmp") || suffix.equals("png") || suffix.equals("gif")) {
   srcImg = ImageIO.read(src);
  } else {
   // BMP가 아닌 경우 ImageIcon을 활용해서 Image 생성
   // 이렇게 하는 이유는 getScaledInstance를 통해 구한 이미지를
   // PixelGrabber.grabPixels로 리사이즈 할때
   // 빠르게 처리하기 위함이다.
   srcImg = new ImageIcon(src.toURL()).getImage();
  }
  
  int srcWidth = srcImg.getWidth(null);
  int srcHeight = srcImg.getHeight(null);
  
  int destWidth = -1, destHeight = -1;
  
  if (width == SAME) {
   destWidth = srcWidth;
  } else if (width > 0) {
   destWidth = width;
  }
  
  if (height == SAME) {
   destHeight = srcHeight;
  } else if (height > 0) {
   destHeight = height;
  }
  
  if (width == RATIO && height == RATIO) {
   destWidth = srcWidth;
   destHeight = srcHeight;
  } else if (width == RATIO) {
   double ratio = ((double)destHeight) / ((double)srcHeight);
   destWidth = (int)((double)srcWidth * ratio);
  } else if (height == RATIO) {
   double ratio = ((double)destWidth) / ((double)srcWidth);
   destHeight = (int)((double)srcHeight * ratio);
  }
  Image imgTarget = srcImg.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
  int pixels[] = new int[destWidth * destHeight];
  PixelGrabber pg = new PixelGrabber(imgTarget, 0, 0, destWidth, destHeight, pixels, 0, destWidth);
  try {
   pg.grabPixels();
  } catch (InterruptedException e) {
   throw new IOException(e.getMessage());
  }
  BufferedImage destImg = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
  destImg.setRGB(0, 0, destWidth, destHeight, pixels, 0, destWidth);
  ImageIO.write(destImg, "jpg", dest);
 }

 public  int getHeight(String strImage,int intMaxWidth){
  Image imgSrc=new ImageIcon(strImage).getImage();
  return imgSrc.getHeight(null)*intMaxWidth/imgSrc.getWidth(null);
 }

}

'Dev > Java' 카테고리의 다른 글

java.sql.SQLException: 스트림이 이미 종료되었습니다  (0) 2010.03.25
Full GC  (0) 2010.03.25
ftp upload  (0) 2010.03.24
ftp 파일삭제.  (0) 2010.03.24
정규표현식을 사용하여 스크립트 제거  (1) 2010.03.24
Posted by 박공명
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함