清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
// cf. http://kyle-in-jp.blogspot.com/2008/08/java2d.html // cf. http://d.hatena.ne.jp/toshyon/20060609/p1 import java.awt.* import java.awt.image.* import javax.imageio.* class GroovyLogoAdder { static def OUTPUT_FORMAT = 'png' static def RATIO = 70 // 縮小率(%) BufferedImage iconImg = ImageIO.read(this.class.getResource('/images/groovy-logo.png')) void makeImage(File file) { // 创建图像 BufferedImage yourImg = ImageIO.read(file) // 调整 int newX = yourImg.width * (RATIO / 100) int newY = newX * iconImg.height / iconImg.width BufferedImage resizedIconImg = new BufferedImage(newX, newY, iconImg.getType()) resizedIconImg.getGraphics().drawImage(iconImg.getScaledInstance(newX, newY, Image.SCALE_AREA_AVERAGING), 0, 0, newX, newY, null) // 调整 def putPosCalc = [ topLeft : { [x: 0, y: 0] }, topRight : { [x: yourImg.width - resizedIconImg.width, y: 0] }, bottomLeft : { [x: 0, y: yourImg.height - resizedIconImg.height] }, bottomRight: { [x: yourImg.width - resizedIconImg.width, y: yourImg.height - resizedIconImg.height] } ] // 添加徽标 Graphics2D gr = yourImg.createGraphics() gr.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0F)) def putPos = putPosCalc.bottomRight() // 右下 gr.drawImage(resizedIconImg, putPos.x, putPos.y ,null) gr.dispose() // グラフィクスを放棄 // 输出(PNG) def resultFile = new File(file.name + '_groovy.' + OUTPUT_FORMAT) ImageIO.write(yourImg, OUTPUT_FORMAT, resultFile) println "${resultFile.name} created." } }