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." |
} |
} |
by: 发表于:2017-09-20 10:12:57 顶(0) | 踩(0) 回复
??
回复评论