BufferedImage在图片添加半透明遮罩层

知兮丶青
阅读(2026) 2019-05-22
BufferedImage在图片添加半透明遮罩层
BufferedImage在图片添加半透明遮罩层

利用BufferedImage处理图片时,例如生成海报往添加图片加文字,由于背景图颜色差异不统一,需要加入纯色半透明遮罩层后,再往上面添加文字。



以下代码演示:在图片底部加入一条高度20的半透明遮罩层

package com;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;

public class ImageUtil {

    public static void main(String[] arg) throws Exception{
        //底图
        BufferedImage background = ImageIO.read(new File("C:\\1.png"));
        Graphics2D bgG2 = (Graphics2D)background.getGraphics();

        //遮罩层大小
        int coverWidth = background.getWidth();
        int coverHeight = 20;
        //遮罩层位置
        int coverX = 0;
        int coverY = background.getHeight() - coverHeight;

        //创建黑色遮罩层
        BufferedImage cover = new BufferedImage(coverWidth, coverHeight, BufferedImage.TYPE_INT_RGB);
        Graphics2D coverG2 = (Graphics2D)cover.getGraphics();
        coverG2.setColor(Color.BLACK);
        coverG2.fillRect(0,0, coverWidth, coverHeight);
        coverG2.dispose();

        //开启透明度
        bgG2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
        //描绘
        bgG2.drawImage(cover, coverX, coverY, coverWidth, coverHeight, null);
        //结束透明度
        bgG2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
        bgG2.dispose();

        //图片保存到本地
        File file =new File("C:\\2.png");
        ImageIO.write(background, "png", file);
    }

}


处理图片前:

处理图片前.png


处理图片后:

处理图片后.png




原创文章,转载请注明出处:https://www.weizhixi.com/article/92.html