BufferedImage image = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_INT_RGB)
Graphics2D g2d = image.createGraphics()
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP)
//绘制背景
g2d.setColor(Color.WHITE)
g2d.fillRect(0, 0, totalWidth, totalHeight)
//清除指定区域内容
g2d.setComposite(AlphaComposite.Src)
g2d.fillRect(x, y, width, height)
g2d.setComposite(AlphaComposite.SrcAtop)
g2d.setColor(Color.GRAY);
g2d.setStroke(new BasicStroke(1));
g2d.drawRect(left, top, width, height);
//设置透明度开始
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.9f))
//绘制图像到指定区域
g2d.drawImage(currentImage, left, top, currentImageWidth, currentImageHeight, null)
//释放对象 透明度设置结束
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER))
/**
* int十六进制格式的颜色转为awt的Color对象
* e.g 0xe9e9e9
* @param color 0xffffffff前两位为透明读, 三四位 R, 五六位 G, 七八位 B
*/
public static Color int2Color(int color) {
int a = ((0x7f000000 & color) >> 24) | 0x00000080;
int r = (0x00ff0000 & color) >> 16;
int g = (0x0000ff00 & color) >> 8;
int b = (0x000000ff & color);
return new Color(r, g, b, a);
}