如何在java中从像素字节数组制作bmp图像

2024-02-07

我有一个字节数组,其中包含 .bmp 文件中的像素值。它是通过这样做生成的:

BufferedImage readImage = ImageIO.read(new File(fileName));
byte imageData[] = ((DataBufferByte)readImage.getData().getDataBuffer()).getData();

现在我需要重新创建 .bmp 图像。我尝试制作 BufferedImage 并通过调用设置 WritableRaster 的像素setPixels方法。但我必须提供一个 int[]、float[] 或 double[] 数组。也许我需要将字节数组转换为其中之一。但我不知道该怎么做。我也尝试过setDataElements方法。但我也不知道如何使用这个方法。

谁能解释一下如何从字节数组创建 bmp 图像?

Edit:@洞察力

这是我到目前为止所做的:

private byte[] getPixelArrayToBmpByteArray(byte[] pixelData, int width, int height, int depth) throws Exception{ int[] pixels = byteToInt(pixelData); BufferedImage image = null; if(depth == 8) { image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY); } else if(depth == 24){ image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); } WritableRaster raster = (WritableRaster) image.getData(); raster.setPixels(0, 0, width, height, pixels); image.setData(raster); return getBufferedImageToBmpByteArray(image); } private byte[] getBufferedImageToBmpByteArray(BufferedImage image) { byte[] imageData = null; try { ByteArrayOutputStream bas = new ByteArrayOutputStream(); ImageIO.write(image, "bmp", bas); imageData = bas.toByteArray(); bas.close(); } catch (Exception e) { e.printStackTrace(); } return imageData; } private int[] byteToInt(byte[] data) { int[] ints = new int[data.length]; for (int i = 0; i

您需要将三个字节打包到您创建的每个整数中。根据缓冲图像的格式,这将是 0xRRGGBB。

byteToInt 必须消耗三个字节,如下所示:

private int[] byteToInt(byte[] data) {
    int[] ints = new int[data.length / 3];

    int byteIdx = 0;
    for (int pixel = 0; pixel < ints.length) {
        int rByte = (int) pixels[byteIdx++] & 0xFF;
        int gByte = (int) pixels[byteIdx++] & 0xFF;
        int bByte = (int) pixels[byteIdx++] & 0xFF;
        int rgb = (rByte << 16) | (gByte << 8) | bByte
        ints[pixel] = rgb;
    }
}

您还可以使用ByteBuffer.wrap(arr, 偏移量, 长度) http://docs.oracle.com/javase/6/docs/api/java/nio/ByteBuffer.html#wrap%28byte%5B%5D,%20int,%20int%29.toInt()

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

如何在java中从像素字节数组制作bmp图像 的相关文章

  • HashMap不写入数据库

    我尝试在我的数据库中写入 但只写入发件人和消息 我不明白为什么会发生这种情况 我认为问题出在我使用 sendMessage 的地方 我认为问题是我没有什么可以做的读 写其他用户的主键 我在数据库中写入消息的活动 public class M
  • 如何在spring mvc中从控制器名称+操作名称获取映射的URL?

    是否有现有的解决方案可以从 Spring MVC3 中的 控制器名称 操作名称 获取映射的 URL 例如 asp net mvc 或 Rails 中的 UrlHelper 我觉得非常有用 thx 也许 你想要这样的东西 in your Co
  • 如何从秘密字符串中制作 HMAC_SHA256 密钥以在 jose4j 中与 JWT 一起使用?

    我想生成 JWT 并使用 HMAC SHA256 对其进行签名 对于该任务我必须使用jose4j https bitbucket org b c jose4j wiki Home 我尝试根据秘密生成密钥 SecretKeySpec key
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • 具有共享依赖项的多模块项目的 Gradle 配置

    使用 gradle 制作第一个项目 所以我研究了 spring gradle hibernate 项目如何组织 gradle 文件 并开始制作自己的项目 但是 找不到错误 为什么我的配置不起作用 子项目无法解决依赖关系 所以项目树 Root
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • Java 数组的最大维数

    出于好奇 在 Java 中数组可以有多少维 爪哇language不限制维数 但是JavaVM规范将维度数限制为 255 例如 以下代码将无法编译 class Main public static void main String args
  • 无法加载或查找主类,可以在命令行中使用,但不能在 IDE 中使用[重复]

    这个问题在这里已经有答案了 在将其标记为重复之前 请先听我说完 我正在尝试使用 gradle 导入一个 java 项目 功能齐全 适用于所有其他笔记本电脑 没有问题 我的项目 100 正常运行 适用于所有其他笔记本电脑 当我的笔记本电脑被重
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • 解决错误javax.mail.AuthenticationFailedException

    我不熟悉java中发送邮件的这个功能 我在发送电子邮件重置密码时遇到错误 希望你能给我一个解决方案 下面是我的代码 public synchronized static boolean sendMailAdvance String emai
  • Java:拆箱整数时出现空指针异常?

    此代码导致空指针异常 我不知道为什么 private void setSiblings PhylogenyTree node Color color throws InvalidCellNumberException PhylogenyTr
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部

随机推荐

  • Kentico中门户模板和ASPX模板的区别

    Kentico 中的门户模板和 ASPX 模板有什么区别 哪个更可取 作为一名 硬核 开发人员和经过认证的 Kentico 培训师 我始终使用并始终推荐使用 Portal Engine 而不是 ASPX 模板 我这么说是因为Portal E
  • 为什么这段带有泛型的代码可以编译?

    这似乎是一个愚蠢的问题 但我现在正在被它绊倒 为什么会这样编译 import java util public class Test public static void main String argv throws Exception
  • ReplayKit 返回错误“RPRecordingErrorFailedToStart”

    我正在尝试将录制功能包含到我的基于 C 的游戏中ReplayKit 我在我的游戏代码中检查iOS版本是否为9 0或以上 如果是 我会调用RecordReplayIOS startRecording 然后 ReplayKit 应该开始录制 由
  • 什么命令显示 Kafka 中分区的所有主题和偏移量?

    我正在寻找一个显示所有主题和分区偏移量的 Kafka 命令 如果是动态的就完美了现在我用java代码来查看这些信息 但是很不方便 Kafka http kafka apache org documentation html附带了一些您可以用
  • 什么时候需要在 TThread 中进行同步?

    我知道你需要synchronize yourprocedure 设置例如标签的文本 但是关于 读取标签的文本 切换 设置标签的启用属性 调用其他标签过程 函数 例如 onclick 事件 当我需要使用时 是否有一个简单的规则可以知道 记住s
  • 谷歌地图最大缩放

    我想设置最大缩放级别以阻止在地图中的某个点之后进行缩放的可能性 var mapa obiekt globalny function dodajMarker opcjeMarkera opcjeMarkera map mapa var mar
  • Jquery UI 可排序 - 在启动事件触发之前执行操作

    我已经在 STACKOVERFLOW 和其他论坛中搜索了我的问题的解决方案 如果我错过了可行的解决方案 请指出它 我的问题 每当在可排序列表中拖动元素 Portlet div 时 我需要在实际拖动过程开始之前执行一些操作 根据我在 STAR
  • 如何在 Tkinter 中禁用(灰显)检查按钮?

    我不知道如何使 Tkinter 变灰Checkbutton 我尝试使用state DISABLED但它不起作用 我收到一条错误消息 tkinter TclError 错误选项 enable 必须是 column columnspan in
  • 如何访问父/兄弟模块方法

    有什么办法可以访问吗baz method inside class Qux没有从一开始就提到模块名称空间 当有很多嵌套模块时 代码看起来不干净 module Foo module Bar module Baz class Qux def s
  • Angular 2 - 使用 ng2-idle 注销

    我的问题是 当单击注销按钮时 ng2 idle 继续工作 为了尝试解决这个问题 我再次将 setIdle 和 setTimeout 函数设置为 1 秒 但是 当用户转移到登录屏幕时 应用程序需要 1 秒才能超时 我想知道在单击调用 logo
  • 如何在 Eclipse 中进行 git merge 压缩

    有时我需要从 Eclipse 合并南瓜 我知道我可以在命令行中完成此操作 但是在 Eclipse 中集成图形选项将非常有用 你知道该怎么做吗 您可以开始一个Egit 中的交互式变基 http wiki eclipse org EGit Us
  • 是否有可靠的工具可以在担任领班时单步执行代码

    我正在寻找一些关于类似于使用 binding pry 的工具的建议 我正在与 foreman 一起在本地提供 Rails 应用程序 并且希望实现相同的功能 将 调试器 放入我的代码中 当进程遇到该问题时 冻结并打开该代码部分中的控制台环境
  • 在 ASP.NET Core MVC 中使用 Tag Helpers 有什么好处

    我刚刚看到一篇关于 ASP NET Core 新功能的好文章 名为标签助手 http stephenwalther com archive 2015 02 24 top 10 changes in asp net 5 and mvc 6 从
  • 挂在 bootstrap 表中的 1000 或 5000 条记录上

    下面的链接给出了很好的例子 http issues wenzhixin net cn bootstrap table 但是 当分页大小从 10 更改为 1000 或 5000 时 浏览器会挂起超过 20 秒或一分钟才能填充网格 数据中的记录
  • 通过绑定新数据来操作元素

    我正在尝试弄清楚如何通过绑定新数据来更新一些 D3 js 元素 我实际上不确定这是否可能 但感觉应该是 首先我创建了四个 SVG 圆圈 并设置cx偏移量作为数据的函数 div div var svg d3 select div contai
  • 固定标题和固定列表

    我的固定标题和固定列表有问题 标题是固定的 但列不是 那么我该如何解决这个问题呢 我试图给第一列位置 固定 但它不能正常工作 如果可能的话 不用Javascript 我试图从同一主题的早期问题中找到解决方案 但这些都没有帮助我 这是我的Co
  • 如何以编程方式清除 Android 中的 DataStore 首选项和房间数据 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个 Android 应用程序 当我按下按钮时 我需要以编程方式清除数据 包括数据存储首选项和房间数据 要清除共享首选项 Sha
  • 以显式意图启动 Android IntentService NullPointerException

    我正在尝试开始一个IntentService来自我主要活动中的点击处理程序 我正在学习Intents现在但还不太明白 我不确定我应该如何在这里实例化我的意图并将其传递给startService 我不知道为什么我必须做这样的事Intent据我
  • Flutter改变FloatingActionButton的子图标颜色

    我是新来的Flutter并试图更改 FloatingActionButton 的子图标颜色 子图标颜色默认为白色 我怎样才能改变它 下面给出的是我已经编写的代码 floatingActionButton new FloatingAction
  • 如何在java中从像素字节数组制作bmp图像

    我有一个字节数组 其中包含 bmp 文件中的像素值 它是通过这样做生成的 BufferedImage readImage ImageIO read new File fileName byte imageData DataBufferByt