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());
    }
  • 相关阅读:
    依赖属性
    浅拷贝与深拷贝
    使用Advanced Installer打包工具如何设置是否安装预安装程序包
    WPF布局容器
    找不到UseInMemoryDatabase方法
    从零开始学.net core(一)
    那些年我们改过的规则代码
    办公达人私藏的EXCEL辅助工具,一人抵十人,高效办公就靠它了!
    面试题:整理
    面试: Vue数组的变异方法
  • 原文地址:https://www.cnblogs.com/yinghao/p/4794074.html
Copyright © 2011-2022 走看看