📜  将字节数组转换为图像的Java程序

📅  最后修改于: 2022-05-13 01:55:22.008000             🧑  作者: Mango

将字节数组转换为图像的Java程序

字节数组是用于存储二进制数据集合的字节数组。例如,图像的字节数组存储图像的每个像素的信息。在字节数组中,我们可以以二进制格式存储任何文件的内容。我们可以像初始化普通数组一样用字节初始化字节数组。

在本文中,我们将学习在Java中将字节数组转换为图像。

将字节数组转换为图像:

如果我们以数组格式给出图像的每个字节的信息,我们就可以从该数组中导出图像。我们可以使用Java中的 ImageIO 类写入和读取图像细节。我们将使用 ImageIO 类的以下方法将字节数组转换为图像。  

  • toByteArray():将图像转换为字节数组。  
  • ByteArrayInputStream( byteArray ):创建 ByteArrayInputStream 类的对象。
  • ImageIO.read():通过传递 ByteArrayInputStream 类对象作为参数来读取图像。
  • ImageIO.write():写入图像。

方法:

1.这里,我们需要字节数组来转换成图片。因此,我们首先读取图像文件并为该图像创建字节数组。

使用 Image.IO 类的 read() 方法读取图像文件。

BufferedImage image = ImageIO.read(new File("Image path"));

创建 ByteArrayOutputStream 类的对象并将图像写入我们在上述步骤中读取的内容。

ByteArrayOutputStream outStreamObj = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", outStreamObj);

将图像转换为字节数组。

byte [] byteArray = outStreamObj.toByteArray();

2.现在,读取字节数组并生成一个新的图像文件。

创建 ByteArrayInputStream 类的对象来读取字节数组。

ByteArrayInputStream inStreambj = new ByteArrayInputStream(byteArray);

从 ByteArrayInputStream 类的对象中读取图像。

BufferedImage newImage = ImageIO.read(inStreambj);

创建一个新文件并将图像写入我们从字节数组中读取的文件中。

ImageIO.write(newImage, "jpg", new File("outputImage.jpg") );

例子:

Java
// Java program to convert byte array to image.
  
import java.io.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
  
class GFG {
    public static void main (String[] args) {
        
      // read the image from the file
      BufferedImage image = ImageIO.read(new File("Image path"));
        
      // create the object of ByteArrayOutputStream class
      ByteArrayOutputStream outStreamObj = new ByteArrayOutputStream();
        
      // write the image into the object of ByteArrayOutputStream class
      ImageIO.write(image, "jpg", outStreamObj);
        
      // create the byte array from image
      byte [] byteArray = outStreamObj.toByteArray();
        
      // create the object of ByteArrayInputStream class
      // and initialized it with the byte array.
      ByteArrayInputStream inStreambj = new ByteArrayInputStream(byteArray);
        
      // read image from byte array
      BufferedImage newImage = ImageIO.read(inStreambj);
        
      // write output image
      ImageIO.write(newImage, "jpg", new File("outputImage.jpg"));
      System.out.println("Image generated from the byte array.");
    }
}


输出: