이미지 사이즈 변경
오늘 필요해서 오전에 간단하게 만든 이미지 사이즈 변경 소스
아무 에러체크도 없지만...
조그만 손보면 여기저기서 쓸만 할 듯..

import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
import javax.imageio.stream.ImageOutputStream;

/**
 * @author 金 度亨
 */
public class JPEGChangeScale {
    public static void changeSize(String inputPath, String outputPath,
            int width, int height) {
        try {
            BufferedImage inBi = ImageIO.read(new File(inputPath));

            if (inBi == null)
                throw new IOException("読み込み時に例外発生. 画像ファイルじゃないとか...");

            // Scale計算
            double scaleWidth = (double) width / (double) inBi.getWidth();
            double scaleHeight = (double) height / (double) inBi.getHeight();
            AffineTransform atf = new AffineTransform();
            atf.setToScale(scaleWidth, scaleHeight);

            float quality = 1;

            // 変換後のファイル
            BufferedImage outBi = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            outBi.createGraphics().drawImage(inBi, atf, null);

            ImageWriter imageWriter = null;
            Iterator imageWriterIterator = ImageIO
                    .getImageWritersByFormatName("jpg");
            if (imageWriterIterator.hasNext()) {
                imageWriter = (ImageWriter) imageWriterIterator.next();
            }
            if (imageWriter == null) {
                System.err.println("JPEGImageWriter not found.");
                System.exit(1);
            }
            ImageOutputStream ios = ImageIO.createImageOutputStream(new File(
                    outputPath));
            imageWriter.setOutput(ios);
            IIOImage iioImage = new IIOImage(outBi, null, null);
            ImageWriteParam iwp = new JPEGImageWriteParam(null);
            iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            iwp.setCompressionQuality(quality);
            imageWriter.write(null, iioImage, iwp);
            ios.close(); // finallyで書くのマンドクセ('A`)
            imageWriter.dispose();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
by BABUKUMA | 2006/08/29 14:08 | 초보프로그래머 | 트랙백 | 덧글(5)
트랙백 주소 : http://babukuma.egloos.com/tb/292596
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by Camy at 2007/04/06 01:12
Hello
Commented by Robert at 2007/04/06 01:15
nice
Commented by Robert at 2007/04/06 01:30
nice
Commented by Naomi at 2007/04/06 01:43
hello
Commented by Naomi at 2007/04/06 01:45
hello

:         :

:

비공개 덧글



<< 이전 페이지 다음 페이지 >>