获得BufferedImage的透明版本

/**
 * Returns a transparent version of the passed <code>BufferedImage</code>.
 *
 * @param image image to be made transparent
 * @param transperancy value of the transparency
 * @return transparent <code>BufferedImage</code>
 */
public static BufferedImage getTransparentImage(BufferedImage image, float transperancy) {

    // Create the image using the
    BufferedImage transparentImage = new    BufferedImage(image.getWidth(), image.getHeight(), Transparency.TRANSLUCENT);

    // Get the images graphics.
    Graphics2D g = transparentImage.createGraphics();

    // Set the graphics composite to Alpha.
    g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, transperancy));

    // Draw the passed image into the new transparent image.
    g.drawImage(image, null, 0, 0);

    // Free all system resources.
    g.dispose();

    // Return the image
    return transparentImage;
}

 

 获得BufferedImage的透明版本

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`BufferedImage.getColorModel().hasAlpha()` 方法返回的是图片的颜色模型中是否包含 Alpha 通道,而不是图片中是否包含透明像素。即使一张彩色图片中不存在透明像素,它的颜色模型中也可能包含 Alpha 通道,这取决于图片的颜色空间和色彩深度。 如果你想判断一张图片中是否包含透明像素,可以使用 `BufferedImage.getTransparency()` 方法,它返回的是图像中透明度的整数表示,对应着 `Transparency` 类中的常量值。如果返回值为 `Transparency.OPAQUE`,说明图片中不存在透明像素;如果返回值为 `Transparency.TRANSLUCENT` 或 `Transparency.BITMASK`,说明图片中包含透明像素。 以下是使用 `getTransparency()` 方法判断图片是否包含透明像素的示例代码: ```java import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ImageTest { public static void main(String[] args) { try { File imageFile = new File("test.png"); // 读取图片文件 BufferedImage image = ImageIO.read(imageFile); // 读取图片到内存中 int transparency = image.getTransparency(); // 获取图片透明度 if (transparency == Transparency.OPAQUE) { System.out.println("该图片不包含透明像素!"); } else { System.out.println("该图片包含透明像素!"); } } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码中,我们使用 `getTransparency()` 方法获取图片的透明度,然后根据返回值判断图片是否包含透明像素。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值