将字节数组转换为图像的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.");
}
}
输出: