Java语言对于图片与数组的相互转换操作
图片转字节数组带有格式的即包含头部格式部分public static byte[] imageToByteArray(BufferedImage image, String format) throws IOException { ByteArrayOutputStream baos new ByteArrayOutputStream(); // 将图像以指定格式如 png, jpg写入字节流 ImageIO.write(image, format, baos); // 从流中获取完整的字节数组 return baos.toByteArray(); }字节数组转图片带有格式的public static BufferedImage byteArrayToImage(byte[] imageBytes) throws IOException { // 将字节数组包装为输入流 ByteArrayInputStream bais new ByteArrayInputStream(imageBytes); // 读取并解码为 BufferedImage return ImageIO.read(bais); }获取具体的每个像素值明了但低效的方式public int[][] getPixelArraySlow(BufferedImage image) { int width image.getWidth(); int height image.getHeight(); int[][] result new int[height][width]; for (int row 0; row height; row) { for (int col 0; col width; col) { // 获取每个像素的ARGB值组合成一个int result[row][col] image.getRGB(col, row); } } return result; }直接从DataBuffer获取高效对于性能敏感的应用直接读取图像的数据缓冲区是更好的选择。需要注意区分图像是否包含Alpha通道public int[][] getPixelArrayFast(BufferedImage image) { // 直接从Raster获取底层字节数据 byte[] pixelData ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); int width image.getWidth(); int height image.getHeight(); boolean hasAlphaChannel image.getAlphaRaster() ! null; int[][] result new int[height][width]; int pixelIndex 0; for (int row 0; row height; row) { for (int col 0; col width; col) { int argb 0; if (hasAlphaChannel) { // 数据顺序通常为: 蓝, 绿, 红, 阿尔法 argb (((int) pixelData[pixelIndex 3] 0xff) 24) | // Alpha (((int) pixelData[pixelIndex 2] 0xff) 16) | // Red (((int) pixelData[pixelIndex 1] 0xff) 8) | // Green ((int) pixelData[pixelIndex] 0xff); // Blue pixelIndex 4; } else { // 无Alpha通道数据顺序为: 蓝, 绿, 红 argb (0xff 24) | // 完全不透明 (((int) pixelData[pixelIndex 2] 0xff) 16) | // Red (((int) pixelData[pixelIndex 1] 0xff) 8) | // Green ((int) pixelData[pixelIndex] 0xff); // Blue pixelIndex 3; } result[row][col] argb; } } return result; }从像素数组创建BufferedImage这是逆向过程最常用setRGB()方法它接受一个一维数组public BufferedImage createImageFromArray(int[] pixels, int width, int height) { // 创建一个指定尺寸和类型的RGB图像 BufferedImage image new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 将像素数组一次性设置到图像中 image.setRGB(0, 0, width, height, pixels, 0, width); return image; }

相关新闻

C++微秒级金融风控引擎:从硬件优化到无锁数据结构实战

C++微秒级金融风控引擎:从硬件优化到无锁数据结构实战

1. 项目概述:为什么微秒级延迟是金融风控的“圣杯”?在金融交易的世界里,时间不是金钱,而是比金钱更重要的东西。无论是高频交易、做市商报价,还是实时风险监控,延迟都是以微秒(百万分之一秒&am…

2026/7/24 11:15:47 阅读更多 →
Godot 4高性能地形系统:Terrain3D核心原理与优化实战

Godot 4高性能地形系统:Terrain3D核心原理与优化实战

1. 项目概述:为什么我们需要一个高性能的Godot地形系统? 如果你正在用Godot引擎开发一款开放世界、生存建造或者任何需要广阔地形的游戏,大概率已经体验过内置 GridMap 或手动拼接 MeshInstance 的局限性了。当你的世界超过1平方公里&…

2026/7/24 11:15:47 阅读更多 →
数据预处理核心技术与实践指南

数据预处理核心技术与实践指南

1. 数据预处理概述 数据预处理是数据分析与机器学习中最为关键的环节之一,它直接影响最终模型的性能和可靠性。在实际项目中,我们常常会遇到原始数据存在缺失值、异常值、格式不一致等问题,这些问题如果不经过妥善处理,会导致模型…

2026/7/24 11:14:47 阅读更多 →

最新新闻

Qwen3.5大模型技术演进与核心能力解析

Qwen3.5大模型技术演进与核心能力解析

1. Qwen到Qwen3.5的技术演进全景作为长期跟踪大模型技术发展的从业者,我完整经历了Qwen系列从初代到3.5版本的迭代过程。这次升级绝非简单的版本号变更,而是涉及模型架构、训练策略、数据工程等多个维度的系统性革新。最直观的表现是,在同等硬…

2026/7/24 11:23:50 阅读更多 →
AMD Zen 6 EPYC处理器搭载3D V-Cache技术,提升服务器性能

AMD Zen 6 EPYC处理器搭载3D V-Cache技术,提升服务器性能

这次我们来看一个关于 AMD 处理器的重要消息:微软间接确认 AMD 将推出配备 3D V-Cache 的 "Zen 6" EPYC 处理器。这个消息对于关注服务器硬件、数据中心技术和处理器架构发展的技术从业者来说,是一个值得关注的信号。 从目前的信息来看&#…

2026/7/24 11:23:50 阅读更多 →
BP神经网络原理与实战调优指南

BP神经网络原理与实战调优指南

1. 神经网络基础与BP算法核心思想BP神经网络作为深度学习的基础模型,其重要性怎么强调都不为过。我第一次接触反向传播算法时,那种"原来如此"的顿悟感至今记忆犹新。BP神经网络本质上是通过误差反向传播来调整网络参数的多层感知机&#xff0c…

2026/7/24 11:23:50 阅读更多 →
如何查看Vue CLI创建的项目是基于Vue 2还是Vue 3

如何查看Vue CLI创建的项目是基于Vue 2还是Vue 3

要确定一个Vue CLI创建的项目是基于Vue 2还是Vue 3,你可以通过几种不同的方法进行确认。下面是一些常用的方法:1. 查看package.json文件在你的项目根目录下,打开package.json文件。在dependencies或devDependencies部分,你可以查找…

2026/7/24 11:23:50 阅读更多 →
本地运行大语言模型:Continue与Ollama开发实践

本地运行大语言模型:Continue与Ollama开发实践

1. 项目概述 在本地开发环境中高效运行大语言模型(LLM)正成为开发者们的新需求。Continue 作为一个开源的开发者工具平台,与 Ollama 这款轻量级本地 LLM 运行环境的结合,为开发者提供了一种全新的工作流可能性。这种组合允许开发者…

2026/7/24 11:23:49 阅读更多 →
基于VMD-CNN-BiLSTM的轴承故障诊断技术解析

基于VMD-CNN-BiLSTM的轴承故障诊断技术解析

1. 项目背景与核心价值 轴承作为旋转机械的核心部件,其健康状态直接影响设备运行安全。传统振动信号分析方法在面对复杂工况时存在特征提取不充分、时序建模能力弱等痛点。本项目融合变分模态分解(VMD)、卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM)三大技术&…

2026/7/24 11:22:49 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻