从字节数组创建 8 位图像

2024-01-17

字节数组是这样获得的 -

BufferedImage image = new Robot().createScreenCapture(new Rectangle(screenDimension));
byte[] array = ((DataBufferByte)getGraycaleImage(image).getRaster().getDataBuffer()).getData();
//  Method getGraycaleImage returns a grayscaled BufferedImage, it works fine

现在我如何从字节数组重建这个灰度图像?

我对 ARGB、RGB 或灰度图像了解不多。我尝试过这个 -

private Image getGrayscaleImageFromArray(byte[] pixels, int width, int height)
{
    int[] pixels2=getIntArrayFromByteArray(pixels);
    MemoryImageSource mis = new MemoryImageSource(width, height, pixels2, 0, width);
    Toolkit tk = Toolkit.getDefaultToolkit();
    return tk.createImage(mis);
}

private int[] getIntArrayFromByteArray(byte[] pixelsByte)
{
    int[] pixelsInt=new int[pixelsByte.length];
    int i;
    for(i=0;i<pixelsByte.length;i++)
        pixelsInt[i]=pixelsByte[i]<<24 | pixelsByte[i]<<16
| pixelsByte[i]<<8 | pixelsByte[i];  // I think this line creates the problem
    return pixelsInt;
}

当我绘制这张图像时,它不是黑白的,而是橙色和灰色的东西。


您必须指定正确的ColorSpace对应于灰度图像。

这是一个例子,可以在http://technojeeves.com/joomla/index.php/free/89-create-grayscale-image-on-the-fly-in-java http://technojeeves.com/joomla/index.php/free/89-create-grayscale-image-on-the-fly-in-java:

public static BufferedImage getGrayscale(int width, byte[] buffer) {
    int height = buffer.length / width;
    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
    int[] nBits = { 8 };
    ColorModel cm = new ComponentColorModel(cs, nBits, false, true,
            Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
    SampleModel sm = cm.createCompatibleSampleModel(width, height);
    DataBufferByte db = new DataBufferByte(buffer, width * height);
    WritableRaster raster = Raster.createWritableRaster(sm, db, null);
    BufferedImage result = new BufferedImage(cm, raster, false, null);

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

从字节数组创建 8 位图像 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo

随机推荐

  • j2me - 列表是否有任何属性来跟踪标识项目的“密钥”

    您通常如何处理列表以及它们没有明确标识特定项目的属性这一事实 到目前为止 我能想到的唯一解决方案是将我使用的密钥放在开头 后跟连字符和每个项目上显示的文本 这样 当我从所选项目中检索文本时 我可以获得该项目的密钥 我就是这样做的 但肯定有更
  • 如何在 Eclipse 项目中使用 Firebase 云消息?

    我在 eclipse 中有一个项目 我需要包括firebase https console firebase google com 图书馆 如果我使用 Android Studio 步骤将很简单 所有的图书馆都包括在内 但我无法理解如何将
  • 使用 JWT OAuth 2.0 令牌的 Cordova 应用程序中的 Azure MFA

    我正在开发一个 Cordova 应用程序 该应用程序 到目前为止 使用密码授予从 Azure 中的 Microsoft 标准 OAuth 提供程序检索 JWT https login microsoftonline com tenant o
  • 使用 bootstrap-vue 导航栏 item-dropdown 更改文本颜色

    我在用Bootstrap Vue编写网页 但我无法更改网页上的文本颜色Bootstrap navbar 尤其是b nav item dropdown标签 我尝试过使用 span class text dark span
  • 如何获取我的项目路径? [复制]

    这个问题在这里已经有答案了 可能的重复 使用 C 获取我的 exe 的路径 https stackoverflow com questions 3991933 get path for my exe using c sharp 你好我有一个
  • 如何使用 terraform 将 ssh 密钥添加到 GCP 实例?

    因此 我有一个在 Google Cloud Platform 中创建实例的 terraform 脚本 我希望能够让我的 terraform 脚本也将我的 ssh 密钥添加到我创建的实例中 以便我可以通过 ssh 来配置它们 这是我当前的 t
  • 使用UTF-16LE编码读取csv的快速方法

    我正在处理使用 UTF 16LE 编码的 csv 文件 此方法可以读取文件 但与 read csv 相比 read csv 非常慢 read csv2 path dec skip 1 header T fileEncoding UTF 16
  • Scrollviewer 和 SIP 问题 (WP7.5 Mango)

    我正在编写一个包含注册表单的应用程序 该表单包含多个文本输入框 因此使用 ScrollViewer 将它们全部显示在一页上 以下是我正在使用的 XAML 代码的精简示例
  • 循环遍历sed的结果

    我在循环访问 sed 返回的存储在变量中的行时遇到问题 目前看起来有点像这样 lines sed rne timestamplastupload timestampnow p var log test log for line in lin
  • ASP.Net Core 中的 Hangfire:简单的重复作业不会刷新其动态内容

    我正在尝试在 ASP Net Core 1 1 中的 Web 应用程序上实现 cron 任务 我决定选择Hangfire https www hangfire io 图书馆 为了检查我的安装和配置是否正常工作 我刚刚编写了一个非常简单的重复
  • 如何在 android 单元测试中创建位置?

    我想使用 JUnit 4 在 android 单元测试中创建一个位置 和 位置 loc 新位置 loc 为空 我如何创建位置 据我了解 我必须使用以下命令将位置包含在 build gradle 依赖项中 测试编译 但我找不到要包含的内容 你
  • 如何找到文件所在的挂载点?

    例如 我有一个具有以下路径的文件 media my mountpoint path to file txt 我已经有了完整的路径并且想要得到 media my mountpoint 我怎样才能做到这一点 最好使用 Python 并且不使用外
  • 带有参数化查询的 jsonb 存在运算符

    或者问号问题 我目前正在 php 中实现 postgres 数据库的搜索功能 该功能使用新的 jsonb 类型 为了实现这一目标 我正在执行带有命名占位符的准备好的语句 然而 我在尝试使用一些新的 postgres 时遇到了一个有趣的问题J
  • 自动将用户自定义字段添加到订单元数据中

    当客户下订单时 是否可以自动将客户自定义字段的值复制到订单的自定义字段 应该使用任何插件 扩展程序还是通过幕后自定义编码来完成 此自定义字段不需要显示在客户订单视图上 当我们通过 API 获取订单时 我们只需要它来区分订单是由 Consum
  • Java - notification() 与 notifyAll() - 可能死锁?

    有没有什么情况notify 可能会导致死锁 但是notifyAll 绝不 例如 在多个锁的情况下 notify 仅通知一个线程运行 该线程检查某个对象的锁定并再次等待 尽管另一个线程可以解锁该对象 如果使用notifyAll 所有线程都会被
  • Android:如何关闭 EditText 的 IME?

    如何关闭 IME 功能EditText 或者 如何避免显示 IME 键盘 我有一个布局 其中我的特殊键盘位于EditText所以不需要显示 IME 请理解 我无法将我的键盘实现为 IME 因为它是特定于此的EditText在任何其他情况下使
  • 更改itms-services安装提示信息

    现在 我有一个定义如下的链接 a itms services action download manifest url https loqi me install Geoloqi plist a 当用户单击此链接时 将显示以下消息 该消息由
  • C++ 2.5 字节(20 位)整数

    我知道这很荒谬 但我需要它来优化存储 有什么好的方法用C 实现吗 它必须足够灵活 以便我可以将它用作普通数据类型 例如Vector lt int20 gt 运算符重载等 如果存储是您主要关心的问题 我怀疑您需要相当多的 20 位变量 将它们
  • 如何使用 Jquery 编写“如果未单击”或“如果在元素外部单击”?

    我有点陷入如何阻止菜单执行 fadeOut 函数的问题 当我单击菜单上的主链接打开子菜单时 它就会淡出 目前代码如下 a main menu item click function if rtmenu visible rtmenu clic
  • 从字节数组创建 8 位图像

    字节数组是这样获得的 BufferedImage image new Robot createScreenCapture new Rectangle screenDimension byte array DataBufferByte get