添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

做小程序的同事让给做个水印图片的接口,以前没做过,百度了下,还挺多,不过做出来的要么图片不透明,要么水印透明度没法控制。改了半天终于做好了,下面上代码:

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
    public String makewatermark(String mark){
        Font font=new Font("微软雅黑", Font.PLAIN, 22);
        Integer width=300;
        Integer height=300;
        // 创建图片
        BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_BGR);
        Graphics2D g2d = image.createGraphics();
        //设置图片透明
        image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
        g2d = image.createGraphics();
        g2d.setColor(Color.LIGHT_GRAY);
        //设置倾斜角度
        g2d.rotate(Math.toRadians(-35), (double) image.getWidth() / 2, (double) image.getHeight() / 2);
        g2d.setFont(font);
        // 消除java.awt.Font字体的锯齿
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        // 0.3f是透明系数 ,透明系数取值范围是 0 ~ 1.0
        g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f));  
        FontMetrics fm = g2d.getFontMetrics(font);
        int markWidth = fm.stringWidth(mark);
        int widthX = (width - markWidth) / 2;
        //将水印绘入图片
        g2d.drawString(mark,widthX,100);
        g2d.dispose();
        //返回图片的base64码
        String base64 = null;
        try {
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            ImageIO.write(image, "png", stream);
            base64 = Base64.encode(stream.toByteArray());
            stream.flush();
            stream.close();
        }catch (IOException e){
            e.printStackTrace();
        return base64;

得到base64字符串后,再浏览器地址栏输入data:image/png;base64,${imagebase64}(${imagebase64}是得到的base64字符串)查看效果如下:

这样看不出效果来,把它放到其它图片上是这样的:

下面是alpha=0.1falpha=1.0f的对比效果:

给小程序拿去平铺就好了。

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNJava BufferedImage 图片背景透明处理科普 在处理图像时,有时我们需要将某些部分的背景设置为透明,以便在其他图像上叠加或创建更复杂的效果。在Java中,使用Buffered...
File f = new File("D:\tag\20141204\chengxu\business-dossier\business-dossier-web\src\main\webapp\upload\2017-08-07\C7A23630C2700001FCD951071A601214.ico");          ICOFile ico = new ICOFile(f.toURL()
ImageObserver : http://www.apihome.cn/api/java/ImageObserver.html BufferedImage:http://www.apihome.cn/api/java/BufferedImage.html Graphics2D:http://www.apihome.cn/api/java/Graphics2D.html
类结构java.lang.Object |____ java.awt.Image |____ java.awt.image.BufferedImagejava.lang.Object |____ java.awt.Graphics |____ java.awt.Graphics2DAPI链接BufferedImage
public static InputStream graphicsPoster(List<List<SetCharactersColVO>> rows) throws IOException { final int w = 200; final int h = 200; final int size = rows.size(); //计算高度 final int max =..
* @param originFile 待处理图片 * @param outFile 输出图片 * @param x 输出图片的x坐标 * @param y 输出图片的y坐标 * @param width 输出图片的宽. 【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】 【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】 m0_59151154: 我的按下f12怎么没什么反应呀,求各位大佬的帮助 【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】 万里石塘: 安装 lightdm: apt-get install lightdm, 重启系统后就可以登录了。Ubuntu 20.04 LTS 【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】 万里石塘: 按F12,输完用户名与密码后,下面状态栏,反复出现: Status: Retry login after 35 seconds 不断倒计时,尝试重新登录。 【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】 散人KK: 你指的哪一步的账号呢? 【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】 PaytonYang: 你好,请问这个账号是写贝瑞的账号吗,为什么我的登录失败呀 【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】 【定时将hbase的索引同步到solr的core,当同步失败时,回滚core】好记性不如烂笔头,我将工作中写的自动化脚本记录在此,供大家参考 【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】 【定时将hbase的索引同步到solr的core,当同步失败时,回滚core】好记性不如烂笔头,我将工作中写的自动化脚本记录在此,供大家参考