@Grab(group='com.jhlabs', module='filters', version='2.0.235') import java.io.* import java.awt.* import java.awt.geom.* import java.awt.image.* import javax.imageio.* import com.jhlabs.composite.* import com.jhlabs.image.* // 画像を角丸四角で切り取って影付けする def img = ImageIO.read(new File("sf2.jpg")) def margin = 10 def imgb = new BufferedImage( img.getWidth()+margin*2, img.getHeight()+margin*2, BufferedImage.TYPE_INT_ARGB ) def grb = imgb.createGraphics() grb.drawImage(img,margin,margin,null) grb.dispose() // 角丸四角の画像を作成 def img2 = new BufferedImage( imgb.getWidth(), imgb.getHeight(), BufferedImage.TYPE_INT_ARGB ) def gr = img2.createGraphics() gr.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON ) gr.setColor(new Color(1F, 1F, 1F, 1F)) def rr = new RoundRectangle2D.Double( (double)margin, (double)margin, img.getWidth()-1, img.getHeight()-1, 20.0*2, 20.0*2) gr.fill(rr) // 切り取り gr.setComposite(AlphaComposite.SrcIn) gr.drawImage(imgb,0,0,null) gr.dispose() def sf = new ShadowFilter() // 半径 sf.setRadius(7f) // 透明度 sf.setOpacity(0.9f) // 角度 sf.setAngle((float)300f/180f*ImageMath.PI) // 距離 sf.setDistance(5f) // 影の色 sf.setShadowColor((int)0xff202020) // 影のマージン sf.setAddMargins(false) // 影のみにするか sf.setShadowOnly(false) img2 = sf.filter(img2, null) ImageIO.write(img2, "png", new File("roundrectshadow.png"))
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
No comments:
Post a Comment