用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - groovy代码库

图片添加水印

2012-10-15 作者: 程序猿style举报

[groovy]代码库

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."
  }
}


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...