返回顶部

收藏

groovy加水印

更多
// 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."
  }
}

标签:groovy

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. TiuVe2 发表 2018-09-04 14:15:19 按钮条件逻辑配置化的可选技术方案
  2. 炒饭 发表 2015-11-25 03:20:12 用git布署网站的方法
  3. 炒饭 发表 2015-11-25 03:20:12 用git布署网站的方法
  4. 博主 发表 2018-04-25 06:46:00 Groovy Grape
  5. 博主 发表 2018-04-26 12:23:00 Groovy Ratpack
  6. 博主 发表 2018-04-26 12:23:00 Groovy Ratpack
  7. 博主 发表 2018-04-25 06:46:00 Groovy Grape
  8. 博主 发表 2018-02-07 09:05:17 IDEA 通过数据库生成 Nutz 实体类
  9. TiuVe2 发表 2018-01-06 13:23:06 使用 yaml+groovy 实现 Java 代码可配置化
  10. 博主 发表 2015-10-02 00:00:00 精通 Groovy
  11. 炒饭 发表 2015-11-25 03:20:12 用git布署网站的方法
  12. 炒饭 发表 2015-11-25 03:20:12 用git布署网站的方法

发表评论