zoukankan      html  css  js  c++  java
  • JAVA给图片添加水印

    public void mark(String srcImgPath, String outImgPath, Color markContentColor, String waterMarkContent,Integer degree) {
    try {
    // 读取原图片信息
    File srcImgFile = new File(srcImgPath);
    Image srcImg = ImageIO.read(srcImgFile);
    int srcImgWidth = srcImg.getWidth(null);
    int srcImgHeight = srcImg.getHeight(null);
    // 加水印
    BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
    Graphics2D g = bufImg.createGraphics();
    g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
    //Font font = new Font("Courier New", Font.PLAIN, 12);
    Font font = new Font("黑体", Font.BOLD, 50);
    g.setColor(markContentColor); //根据图片的背景设置水印颜色
    g.setFont(font);
    // int x = srcImgWidth - getWatermarkLength(waterMarkContent, g) - 3;
    //  int y = srcImgHeight - 3;
    //设置文字在图片上居中
    int x = (srcImgWidth - getWatermarkLength(waterMarkContent, g)) / 2;
    int y = srcImgHeight / 2;
    //设置水印旋转
    if (null != degree) {
    g.rotate(Math.toRadians(degree),
    (double) bufImg.getWidth() / 2, (double) bufImg
    .getHeight() / 2);
    }
    // 7、设置水印文字透明度
    float alpha = 0.8f; // 透明度;1.0f为不透明
    g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));
    //第一参数->水印的内容,后面两个参数->文字在图片上的坐标位置(x,y)
    g.drawString(waterMarkContent,x, y);
    //释放资源
    g.dispose();
    // 输出图片
    FileOutputStream outImgStream = new FileOutputStream(outImgPath);
    ImageIO.write(bufImg, "jpg", outImgStream);
    outImgStream.flush();
    outImgStream.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    public int getWatermarkLength(String waterMarkContent, Graphics2D g) {
    return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());
    }
  • 相关阅读:
    2016年3月17日----Javascript的正则表达式
    2016年3月17日----Javascript的时间与日期
    2016年3月9日----Javascript的对象和数组
    2016年3月8日----Javascript的函数
    2016年3月7日----Javascript的运算符
    2016年3月7日----Javascript的数据类型
    2016年3月1日----Javascript的数组元素的添加、移除以及其他常用方法
    console深入理解
    浏览器特性和安全策略
    每日新知
  • 原文地址:https://www.cnblogs.com/yinghao/p/4794074.html
Copyright © 2011-2022 走看看