Groovy MY-NOTEBOOK

Monday, January 16, 2012

groovy で画像リサイズ

カレントディレクトリにあるPNGを 500px の幅の画像に変換するコード。


import java.awt.Image
import java.awt.image.BufferedImage
import javax.imageio.ImageIO


class Conv {

	File inputFile
	File outputFile

	void proc(){
		int width=500 // default width
		
		// イメージの読み込みとリサイズ
		def img = ImageIO.read(inputFile)
		def imgScaled = img.getScaledInstance(width,-1,Image.SCALE_SMOOTH)
		
		// リサイズ(スケール)されたイメージを直接 ImageIO.write() できないので、処理を追加
		def img2 = new BufferedImage((int)imgScaled.width,(int)imgScaled.height,BufferedImage.TYPE_4BYTE_ABGR)
		def g = img2.getGraphics();
		g.drawImage(imgScaled,0,0,null)
		g.dispose()
		
		// リサイズされたイメージを保存
		ImageIO.write(img2,'PNG',outputFile)
	}
}

new File('.').listFiles( { it.isFile() && it.name.endsWith('png') } as FileFilter ).each{
	new Conv( inputFile:it,outputFile:it ).proc()
}


gist:1621382

© 2009-2012 Tomoaki Oshima