实现图片的透明度,则是在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;
}
}