преобразование изображения в base64 с помощью java

Мне нужно преобразовать объект image в объект base64, чтобы я мог загрузить его в тег на моей стороне клиента.

однако я не могу понять, как это сделать. Есть кто-нибудь, у кого есть кусок кода для этого, что я мог бы легко использовать?

Это то, что я использую, чтобы превратить внешнюю ссылку изображения в объект изображения

Image image = null;
URL url = new URL(request.getParameter("hdn_path"));
image = ImageIO.read(url);

Не уверен, что я собираюсь об этом правильно.

3 ответов


Использование Apache IOUtils и Base64:

byte[] imageBytes = IOUtils.toByteArray(new URL("...")));
String base64 = Base64.getEncoder().encodeToString(imageBytes);

  • запись с помощью ImageIO.писать.)(
  • ByteArrayOutputStream обертывает массив байтов, чтобы его можно было использовать в качестве выходного потока.
  • преобразовать массив байтов в строку base64 с помощью DatatypeConverter, в core Java с 6, никаких дополнительных библиотек не требуется

пример

ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageIO.write(image, "png", output);
DatatypeConverter.printBase64Binary(output.toByteArray());

принято отвечать читает файл из URL, если кто-либо ищет кодировку изображения Base64, читая изображение из файловой системы, ниже фрагмента может быть использован.

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Base64;
import org.apache.commons.io.IOUtils;

public String img2Text(){
    String base64="";
    try{
        InputStream iSteamReader = new FileInputStream("featured-700x467.png");
        byte[] imageBytes = IOUtils.toByteArray(iSteamReader);
        base64 = Base64.getEncoder().encodeToString(imageBytes);
        System.out.println(base64);
    }catch(Exception e){
        e.printStackTrace();
    }
    return "data:image/png;base64,"+base64;
}

возвращенный текст base64 можно использовать в HTML-страницах, как показано ниже пример

<!DOCTYPE html>
<html>
<body>

<img src="data:image/png;base64,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
" alt="Smiley face" width="42" height="42">

</body>
</html>