Рубрики
Без рубрики

Как преобразовать буферизованное изображение в байт[] в Java

В этой статье показано, как преобразовать “буферизованное изображение” в “байт[]” в Java.

В этой статье показано, как преобразовать Буферизованное изображение в массив байтов или байт[] .

  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-ввод-вывод

Рекомендации

Оригинал: “https://mkyong.com/java/how-to-convert-bufferedimage-to-byte-in-java/”