图片透明度算法实现
图片透明度算法实现

实现图片的透明度,则是在RGB模式中,对每一个像素的alpha通道进行设值(0-255),0表示完全透明,255则是完全不透明。

所以对图片进行透明度,及对每一个像素循环设置alpha值及可

原图如下:

效果图如下:

 

核心代码如下:


@Component(value = "alphaFilter")
public class TransparencyFilter extends AbstractPictureFilter {
    //默认透明度150
    private int alpha = 150;
    /**
     * log
     **/
    private static final Log log = LogFactory.getLog(TransparencyFilter.class);

    /**
     * 对像素color 进行处理
     *
     * @param color 原color
     * @return 新color
     */
    @Override
    protected Color filterColor(Color color) {
        return new Color(color.getRed(), color.getGreen(), color.getBlue(),alpha);
    }

    /**
     * 对图片增加滤镜
     *
     * @param image 图片
     * @return 增加滤镜之后的图片
     */
    @Override
    public BufferedImage pictureAddFilter(BufferedImage image) {
        //生成一个支持透明度的图片
        BufferedImage tranImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
        int width = image.getWidth();
        int height = image.getHeight();
        int minWidth = image.getMinX();
        int minHeight = image.getMinY();

        for (int i = minWidth; i < width; i++) {
            for (int y = minHeight; y < height; y++) {
                int rgb = image.getRGB(i, y);
                Color color = new Color(rgb);
                color = filterColor(color);
                tranImage.setRGB(i,y,color.getRGB());
            }
        }
        return tranImage;
    }
}
Copyright © 2019-2020 2024-04-25 09:51:31