在 Java 中设置 BufferedImage alpha 掩码

2024-04-13

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

我想通过应用 alpha 蒙版从这两个图像创建一个组合图像。我的谷歌搜索失败了。

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


我这个答案已经太晚了,但也许它对某人有用。这是迈克尔·迈尔斯方法的更简单、更有效的版本:

public void applyGrayscaleMaskToAlpha(BufferedImage image, BufferedImage mask)
{
    int width = image.getWidth();
    int height = image.getHeight();

    int[] imagePixels = image.getRGB(0, 0, width, height, null, 0, width);
    int[] maskPixels = mask.getRGB(0, 0, width, height, null, 0, width);

    for (int i = 0; i < imagePixels.length; i++)
    {
        int color = imagePixels[i] & 0x00ffffff; // Mask preexisting alpha
        int alpha = maskPixels[i] << 24; // Shift blue to alpha
        imagePixels[i] = color | alpha;
    }

    image.setRGB(0, 0, width, height, imagePixels, 0, width);
}

它一开始就将所有像素读入一个数组,因此只需要一个 for 循环。此外,它直接将蓝色字节转移到(蒙版颜色的)alpha,而不是先屏蔽红色字节然后再移动它。

与其他方法一样,它假设两个图像具有相同的尺寸。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中设置 BufferedImage alpha 掩码 的相关文章

  • Netbeans 8.1 Gnome 3 GTK+ UI 字体和选项卡高度

    我刚刚在运行 GNOME 3 桌面的 Ubuntu 16 04 上安装了 NetBeans 8 1 如果可能的话 我想继续使用 IDE 的 GTK 外观和感觉 但 UI 上的字体 尤其是选项卡中的字体 太小且重叠 我尝试添加 fontsiz
  • 带路径压缩算法的加权 Quick-Union

    有一种 带路径压缩的加权快速联合 算法 代码 public class WeightedQU private int id private int iz public WeightedQU int N id new int N iz new
  • 有没有创建 Cron 表达式的 Java 代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要一个 Java 代码来根据用户输入创建一个 cron 表达式 用户输入是时间 频率和执行次数 只需从评论中添加 自己创建 即可
  • TreeMap 删除所有大于某个键的键

    在项目中 我需要删除键值大于某个键的所有对象 键类型为Date 如果重要的话 据我所知TreeMapJava中实现的是红黑树 它是一种二叉搜索树 所以我应该得到O n 删除子树时 但除了制作尾部视图并一一删除之外 我找不到任何方法可以做到这
  • 如何在 JavaFX 中连接可观察列表?

    我所说的串联是指获得一个新列表 该列表侦听所有串联部分的更改 方法的目的是什么FXCollections concat ObservableList
  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • 与 Eclipse 中的 Java Content Assist 交互

    作为我的插件项目的一部分 我正在考虑与 Eclipse 在 Java 文件上显示的内容辅助列表进行交互 我正在尝试根据一些外部数据对列表进行重新排序 我看过一些有关创建新内容辅助的教程 但没有看到有关更改现有内容辅助的教程 这可能吗 如果是
  • Android中如何使用JNI获取设备ID?

    我想从 c 获取 IMEIJNI 我使用下面的代码 但是遇到了未能获取的错误cls 它总是返回NULL 我检查了环境和上下文 它们都没有问题 为什么我不能得到Context班级 我在网上搜索了一下 有人说我们应该使用java lang Ob
  • 如何在 Spring 中使 @PropertyResource 优先于任何其他 application.properties ?

    我正在尝试在类路径之外添加外部配置属性资源 它应该覆盖任何现有的属性 但以下方法不起作用 SpringBootApplication PropertySource d app properties public class MyClass
  • Android 无法解析日期异常

    当尝试解析发送到我的 Android 客户端的日期字符串时 我得到一个无法解析的日期 这是例外 java text ParseException 无法解析的日期 2018 09 18T00 00 00Z 位于 偏移量 19 在 java t
  • 如何在java中将日期格式从YYMMDD更改为YYYY-MM-DD? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从机器可读代码中获取日期格式为 YYMMDD 如何将其更改为 YYYY MM DD 例如我收到 871223 YYMMDD 我想把它改成
  • Java Applet 中的 Apache FOP - 未找到数据的 ImagePreloader

    我正在研究成熟商业产品中的一个问题 简而言之 我们使用 Apache POI 库的一部分来读取 Word DOC 或 DOCX 文件 并将其转换为 XSL FO 以便我们可以进行标记替换 然后 我们使用嵌入到 Java 程序中的 FOP 将
  • Akka 与现有 java 项目集成的示例

    如果我已经有现有的javaWeb 应用程序使用spring and servlet容器 将 Akka 集成到其中的正确方法是什么 就像我将会有Actor1 and Actor2互相沟通的 开始使用这些演员的切入点是什么 例如 1 把它放在那
  • 如何使用 JMagick 转换色彩空间?

    如何使用 JMagick API 转换色彩空间 例如 CMYK gt RGB 和 RGB gt CMYK None
  • 蓝牙发送和接收文本数据

    我是 Android 开发新手 我想制作一个使用蓝牙发送和接收文本的应用程序 我得到了有关发送文本的所有内容逻辑工作 但是当我尝试在手机中测试它时 我看不到界面 这是Main Activity Code import android sup
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • 将 JavaFX FXML 对象分组在一起

    非常具有描述性和信息性的答案将从我这里获得价值 50 声望的赏金 我正在 JavaFX 中开发一个应用程序 对于视图 我使用 FXML
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • Android S8+ 警告消息“不支持当前的显示尺寸设置,可能会出现意外行为”

    我在 Samsung S8 Android 7 中收到此警告消息 APP NAME 不支持当前的显示尺寸设置 可能会 行为出乎意料 它意味着什么以及如何删除它 谢谢 通过添加解决supports screens 机器人 xlargeScre
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似

随机推荐

  • 如何列出Excel中三列中值的所有可能组合?

    我有三列 每一列都有不同类型的主数据 如下所示 现在 我想要这三个单元格的所有可能组合 就像 aa kk jj aa kk ff aa ll jj aa ll ff aa mm jj 这可以用公式来完成吗 我发现一个公式有 2 列 但我无法
  • Prism的RegionManager视图切换性能

    我正在对使用 PRISM 库编写的 WPF 应用程序进行性能分析 在此应用程序中 从一个视图导航到另一视图特别慢 尤其是在远离 重 视图时 注意 来回导航时视图会被缓存并且不会重新构造 PRISM 将所有视图保留在 SingleActive
  • 为什么要有移动语义?

    首先我要说的是 我已经阅读了有关移动语义的许多问题中的一些 这个问题不是关于如何使用移动语义 而是问它的目的是什么 如果我没有记错的话 我不明白为什么需要移动语义 背景 我正在实现一个重磅课程 就这个问题而言 它看起来像这样 class B
  • WooCommerce 购物车基于数量的折扣

    在 WooCommerce 中 如何根据购物车中的商品总数设置购物车折扣 例如 1 至 4 件商品 无折扣 5 至 10 件 5 11 至 15 件 10 16 至 20 件商品 15 21 至 25 件商品 20 26 至 30 件商品
  • 使用 Cassandra PasswordAuthenticator 时,DSE OpsCenter 最佳实践失败

    启用 Cassandra 的 PasswordAuthenticator 时 以下最佳实践检查将失败 搜索启用了错误自动提交的节点 启用查询结果缓存的搜索节点 搜索过滤器缓存错误的节点 我的数值符合推荐值 我已经确认 当我在 Cassand
  • 如何在iOS中绘制单点线

    我想知道绘制单点线的最佳方法是什么 我的目标是在 tableViewCell 中绘制这条线 使其看起来就像本机单元格分隔符 我不想使用原生分隔符 因为我想使用不同的颜色和不同的位置 不是底部 起初我使用 1px UIView 并将其着色为灰
  • 保护节点 Redis

    我正在尝试保护 Node Redis IPC 服务器以使用私钥 公钥 我已经关注了本教程 http bencane com 2014 02 18 sending redis traffic through an ssl tunnel wit
  • 如何在 C#、ASP .NET 中修改请求标头

    我正在开发 ASP NET mVC 项目 并且必须更改 HttpHeaders 请参阅下面的代码片段 WebRequest req HttpWebRequest Create myURL HttpWebResponse response H
  • 单击耳机按钮时应用程序崩溃

    我已经构建了一个部署在 android google playstore 中的音频播放器 我正在使用 crashlytics 来监控崩溃和 ANR 最近我遇到了很多 MediaButtonReceiver 崩溃的情况 耳机的咔嗒声在许多设备
  • 如何仅使用CSS和HTML实现带有标题+可滚动侧边栏+可滚动内容的应用程序布局[重复]

    这个问题在这里已经有答案了 我需要构建一个标准的 Web 应用程序 其中包含标题 左侧边栏 如果选项太多则可滚动 和内容大小合适 这是我的尝试 wrapper font size 14px height 100 width 100 marg
  • 使用MATLAB编写一个函数,在二维中实现牛顿法

    我正在尝试编写一个在二维中实现牛顿法的函数 虽然我已经做到了这一点 但我现在必须调整我的脚本 以便我的函数的输入参数必须是列向量 雅可比矩阵 中的 f x 的f x 最初的猜测x0以及函数的公差f x 及其雅可比矩阵位于单独的 m 文件中
  • 数组空指针异常? [复制]

    这个问题在这里已经有答案了 好的 我不明白为什么我的代码报告 NullPointerException 但我已经在这里呆了很长一段时间试图弄清楚它 And no files is not null 编辑 这是我的一个错误 它是空的 我没有看
  • 去掉 Eclipse 生成的serialVersionUID上面的注释

    这已经成为我的一个烦恼 我写一个类 并实现Serializible 然后日食警告我说我没有serialVersionUID 所以我选择 添加生成的serialVersionUID or 添加默认的serialVersionUID 我最终得到
  • Base 64 或 MD5 哪种加密方法最好?

    我目前正在使用 MD5 加密将密码存储在数据库中 我们之前没有密码重置功能 但现在我们正在实施它 所以我无法解密MD5并将密码发送给用户 但如果它是用 base64 加密的 我就可以做到 现在我有点困惑哪种是最好的加密方法 我已经对强密码进
  • Visual Studio 2017 在加载解决方案时挂起

    我有一个包含 4 个项目的解决方案 一个 NET Framework 项目 Ananas 两个 NET Core项目 香蕉和樱桃 一个 Xamarin 项目 露莓 每次我启动 Visual Studio 2017 Community 15
  • 如何使用 GridLayout 和多个面板?

    如何使用多个JPanel容器使这段代码看起来像这样 这是我的代码应该是什么样子的图像 但我无法弄清楚 我只能用GridLayout BorderLayout and FlowLayout 作为初学者 我们只了解了基本概念 但我需要更多帮助
  • glDeleteShader - 顺序无关吗?

    在 OpenGL 中 顺序为glAttachShader无关紧要 这是否相同glDeleteShader 如果正在进行一些动态内存分配 我会说是的 但也许在 opengl 上下文中处理方式不同 简单的答案是 没关系 您可以在将它们附加到程序
  • 等待由 IContextMenu.InvokeCommand 启动的进程

    我有一个TListView其项目是文件 用户可以通过双击它们来打开它们 为此 我将文件保存在 Windows 临时文件夹中 启动一个线程来打开保存的文件ShellExecuteEx 并让它等待ShellExecuteInfo hProces
  • 为什么 tee 等待所有子 shell 完成?

    我有一个运行 mysqld 的服务器脚本并分叉以继续运行 举个例子 mysqld
  • 在 Java 中设置 BufferedImage alpha 掩码

    我有两个从 png 加载的 BufferedImage 第一个包含图像 第二个包含图像的 alpha 蒙版 我想通过应用 alpha 蒙版从这两个图像创建一个组合图像 我的谷歌搜索失败了 我知道如何加载 保存图像 我只需要从两个 Buffe