java - 如何在Java中使透明图像变得不透明?

标签 java graphics png transparency bufferedimage

对于Java程序(“常规”程序,不是Applet和/或Android等),我有透明的PNG,可以在其他图片上加载和绘制,效果非常好。现在,对于它们下面没有其他图片的情况(确定是否是这种情况不是问题,相应的代码已经有效实现),我希望它们变得不透明,但不是简单设置的意义上背景颜色;由于相关的 png 源文件是全彩色的,只是降低了不透明度(alpha 值),我想,简单地将所有颜色的不透明度增加到 100% 是没有问题的,我只是不知道命令来执行此操作。首选且迄今为止有针对性的方法是将它们绘制在 BufferedImage 中,然后分别进行修改,但如前所述:如何?

TLDR:不透明度 <100% 的 .png 图像(整个图片上的值相同),如何在 Java 中设置不透明,最好使用 BufferedImage 或更简单

提前感谢您的回答

最佳答案

您可以尝试 RescaleOp 将 Alpha 分量一直缩放到不透明:

float[] scales = { 1f, 1f, 1f, 0f };  // R, G, B, A
float[] offsets = {0f, 0f, 0f, 255f};   // R, G, B, A
RescaleOp rescaler = new RescaleOp(scales, offsets, null);
BufferedImage opaque = rescaler.filter(original, null);

参见this Java 2D tutorial了解更多信息。

关于java - 如何在Java中使透明图像变得不透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18169333/

相关文章:

java - 错误 Volley 库 com.android.volley.ParseError : org. json.JSONException:

image - 适用于 Windows 的 Haskell 替代 SDL

java - 如何使我的代码中每个方 block 的颜色都不同?

python - 如何在 python 中修改现有文件的压缩 itxt 记录?

java - SOAPHandler:如何从子元素中删除自动添加的命名空间/属性

java - 如何清理 ThreadLocals

java - 迁移到 CXF 3.2.7 -> 如何解决 SOAP RQ 处理期间与密码相关的安全错误?

graphics - 四元数和球面旋转坐标之间的正确转换?

php - PNG 多个 IDAT block (PHP)

c - "Unsigned modulo 256"在图像解码的上下文中意味着什么