В этой небольшой статье я покажу вам простой способ преобразования изображения в массив байтов и наоборот: как преобразовать массив байтов в изображение.
Прежде всего давайте определим что такое байта и что он собой представляет. В Java тип byte
представляет собой 8-разрядное целое число. Его диапазон: от -128 до 127. В этой статье мы будет конвертировать картинку в массив таких байтов. Любое изображение представляет собой файл, поэтому перед нам стоит задача преобразования файла в массив байт, с которым удобно работать, хранить или передавать.
Преобразовываем изображение в массив байтов на Java
В нашей реализации использовался класс BufferedImage
, использование которого является наиболее эффективным способом таких преобразований:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package ua.com.prologistic; 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; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; public class ConvertImageToByteArray { public static void main(String[] args) throws IOException{ String directory = "F:\\"; ByteArrayOutputStream baos = new ByteArrayOutputStream(1000); BufferedImage image = ImageIO.read(new File(directory, "imageFile.jpg")); // явно указываем расширение файла для простоты реализации ImageIO.write(image, "jpg", baos); baos.flush(); String base64String = Base64.encode(baos.toByteArray()); baos.close(); // декодируем полученную строку в массив байт byte[] resByteArray = Base64.decode(base64String); // считываем полученный массив в объект BufferedImage BufferedImage resultImage = ImageIO.read(new ByteArrayInputStream(resByteArray)); // сохраняем объект BufferedImage в виде нового изображения ImageIO.write(resultImage, "jpg", new File(directory,"resultImage.jpg")); } } |
Вот такая коротенькая статья о преобразовании изображения в массив байтов на Java.