You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将数组存储的原始灰度图像数据保存为图片?

灰度图像原始byte数组转BufferedImage并保存

你可以直接操作BufferedImage的底层像素缓冲区完成数据转移,再用ImageIO类将图像保存为文件,完整实现代码如下:

import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.io.File;
import javax.imageio.ImageIO;

public class GrayImageProcessor {
    public static void main(String[] args) throws Exception {
        // 替换为API返回的实际尺寸和数据
        int width = 640;
        int height = 480; // 注意你代码里的length应该是height,避免图像尺寸错误
        byte[] buffer = API.readGrayScaleImageRawData();

        // 创建灰度类型的BufferedImage实例
        BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);

        // 转移原始像素数据到BufferedImage
        byte[] imageBuffer = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();
        System.arraycopy(buffer, 0, imageBuffer, 0, buffer.length);

        // 保存图像到本地,支持png、jpg等格式
        ImageIO.write(bufferedImage, "png", new File("output_gray_image.png"));
    }
}

核心逻辑说明

  • BufferedImage.TYPE_BYTE_GRAY类型的图像,底层用DataBufferByte存储像素值,每个字节对应一个0-255的灰度级
  • 通过getRaster().getDataBuffer()获取图像的底层数据缓冲区,强制转换为DataBufferByte后可直接拿到内部字节数组
  • 用System.arraycopy高效复制原始数据,比逐像素赋值的性能高很多
  • 务必确认width和height参数与原始图像匹配,否则会出现图像拉伸、错位问题

内容的提问来源于stack exchange,提问作者DuJiang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:52:02