В этой статье показано, как преобразовать Буферизованное изображение
в массив байтов или байт[]
.
BufferedImage bi = ImageIO.read(new File("c:\\image\\mypic.jpg")); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bi, "jpg", baos); byte[] bytes = baos.toByteArray();
Идея заключается в том, чтобы использовать ImageIO.write
для записи буферизованного изображения
объекта в ByteArrayOutputStream
объект, и мы можем получить байт[]
из ByteArrayOutputStream
.
1. Преобразовать буферизованное изображение в байт[]
Ниже приведен пример Java преобразования буферизованного изображения
в байт[]
, и мы используем кодировщик Base64 для кодирования изображения байт []
для отображения. В конце концов, мы также преобразуем байт[]
обратно в новое буферизованное изображение
и сохраняем его в новом файле изображения.
package com.mkyong.io.image; import org.apache.commons.codec.binary.Base64; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.*; public class ImageUtils { // convert BufferedImage to byte[] public static byte[] toByteArray(BufferedImage bi, String format) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bi, format, baos); byte[] bytes = baos.toByteArray(); return bytes; } // convert byte[] to BufferedImage public static BufferedImage toBufferedImage(byte[] bytes) throws IOException { InputStream is = new ByteArrayInputStream(bytes); BufferedImage bi = ImageIO.read(is); return bi; } public static void main(String[] args) throws IOException { BufferedImage bi = ImageIO.read(new File("c:\\test\\google.png")); // convert BufferedImage to byte[] byte[] bytes = toByteArray(bi, "png"); //encode the byte array for display purpose only, optional String bytesBase64 = Base64.encodeBase64String(bytes); System.out.println(bytesBase64); // decode byte[] from the encoded string byte[] bytesFromDecode = Base64.decodeBase64(bytesBase64); // convert the byte[] back to BufferedImage BufferedImage newBi = toBufferedImage(bytesFromDecode); // save it somewhere ImageIO.write(newBi, "png", new File("c:\\test\\google-decode.png")); } }
Скачать Исходный Код
$клон git $клон git
$cd java-ввод-вывод
Рекомендации
- Изображение Javax
- Изображение JavaDoc
- Преобразование файлов в массивы байтов на Java
- Как читать и писать изображение на Java
- Как изменить размер изображения в Java
Оригинал: “https://mkyong.com/java/how-to-convert-bufferedimage-to-byte-in-java/”