当前位置: 首页 > 面试题库 >

在Java中设置BufferedImage alpha蒙版

呼延才俊
2023-03-14
问题内容

我有两个从png加载的BufferedImages。第一个包含图像,第二个包含图像的Alpha蒙版。

我想通过应用Alpha蒙版从两者创建组合图像。我的谷歌福使我失败。

我知道如何加载/保存图像,我只需要从两个BufferedImage到具有正确alpha通道的一个BufferedImage的位。


问题答案:

通过一次获取多个像素以上的RGB数据,可以改善您的解决方案(请参见http://java.sun.com/javase/6/docs/api/java/awt/image/BufferedImage.html),并通过不在内部循环的每次迭代上创建三个Color对象。

final int width = image.getWidth();
int[] imgData = new int[width];
int[] maskData = new int[width];

for (int y = 0; y < image.getHeight(); y++) {
    // fetch a line of data from each image
    image.getRGB(0, y, width, 1, imgData, 0, 1);
    mask.getRGB(0, y, width, 1, maskData, 0, 1);
    // apply the mask
    for (int x = 0; x < width; x++) {
        int color = imgData[x] & 0x00FFFFFF; // mask away any alpha present
        int maskColor = (maskData[x] & 0x00FF0000) << 8; // shift red into alpha bits
        color |= maskColor;
        imgData[x] = color;
    }
    // replace the data
    image.setRGB(0, y, width, 1, imgData, 0, 1);
}


 类似资料:
  • 问题内容: 我有两个JDK,分别用于Java 6和7。 我想同时使用这两个项目。最初,我们仅针对1.6构建。我在项目设置中看到可以选择1.5、1.6 1.7作为编译器级别。 这些选项如何添加到IDE中?我从未安装过Java 1.5。假设我想要Java 1.4。我如何将其显示在列表中?我在我的IDE首选项中添加了两个不同的JRE,但是下拉菜单中没有这些。 问题答案: 你可以在中管理可用的编译器列表。

  • 问题内容: 在Java中设置断点如何工作?它仅基于源文件名和行号吗?类或方法名称是否也存在? 如果调试器中有旧版本的源代码并设置了断点,则逐步执行时光标会关闭。距离有多远?它会进入错误的方法中吗(如果该文件中有多个类,甚至是错误的类)? 当JVM中有多个同名的类时,会发生什么情况(如果您有多个类加载器,可能会发生这种情况)?他们都得到断点了吗? 在Web应用程序容器中,是否可以仅为一个Web应用程

  • 我是库伯内特人。我在Minikube中配置的整个设置。我不确定它是否与其他kubernetes设置有所不同。 我已经在我的设置中创建了一个POD,一个Spring Boot应用程序正在8080端口上运行,这个服务将在20080端口上向集群公开。 我正在运行tcpDum的集群内运行另一个pod。我需要在20080上转储撞击集群的HTTP数据包。请告诉我如何从tcpDumpod访问集群接口。 我尝试了

  • 但在Wire shark软件中,我们看到客户端只在TLSV1中与服务器进行对话。 参考链接:https://superuser.com/questions/747377/enable-tls-1-1-and-1-2-for-clients-on-java-7 在和中。但仍然在Wire shark软件中,我们看到客户端只在TLSV1中与服务器进行对话。 谁能告诉我们如何在客户端和服务器上执行TLS1

  • 问题内容: 我可以如下设置Firefox的代理设置。 但是我也需要设置Chrome。.有人可以帮助我怎么做吗? 谢谢拉吉 问题答案: 您可以尝试使用该类,如下所示: