Java 缓冲图像 RescaleOp 透明度问题

标签 java graphics transparency bufferedimage brightness

我似乎遇到了一个问题,我创建了一个具有透明像素的 BufferedImage,如下所示:

BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB);

它工作正常,直到我通过 RescaleOp 过滤它以使其变暗。当我这样做时,图像消失了。这是我的完整代码,您可以看到我是如何设置的:

    BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = buff.createGraphics();
    g.drawImage(i, 0, 0, null);
    g.dispose();
    RescaleOp filter = new RescaleOp(lightlevel, 0f, null);
    buff = filter.filter(buff, null);

我的问题是,我该如何解决这个问题,以便缓冲图像的像素变暗而不影响透明度?

最佳答案

你可以试试 RescaleOp处理 alpha,如图所示 here , 并为所有颜色分量使用相同的 lightLevel

关于Java 缓冲图像 RescaleOp 透明度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9612677/

相关文章:

java - Android:闲置 X 分钟后重新打开应用程序?

java - Apache ACE 中是否有任何规则引擎可以跳过 UI 操作 : register target, 安装分发?

雷达图外围标签截止

HTML5 Canvas 图层难题(z-index)

svg - SVG对象可以同时具有填充颜色和填充图案吗?

java - 为什么没有出现僵局

r - 组合由 R base、lattice 和 ggplot2 创建的图

java - 提取具有透明背景的图像部分

c++ - 如何确定索引模式 SDL_Surface 是否具有透明度?

java - 与 HikariCP 的并发