使用java将图像转换为base64

NoS*_*ies 7 java base64 jsp servlets image

我需要将图像对象转换为base64对象,以便将其加载到客户端的标记中.

但是我似乎无法弄清楚如何解决这个问题.是否有人可以轻松使用这段代码?

这是我用来将外部图像链接转换为图像对象的方法

Image image = null;
URL url = new URL(request.getParameter("hdn_path"));
image = ImageIO.read(url);
Run Code Online (Sandbox Code Playgroud)

我不确定我是否正确的方式.

Jea*_*art 11

使用Apache IOUtilsBase64:

byte[] imageBytes = IOUtils.toByteArray(new URL("...")));
String base64 = Base64.getEncoder().encodeToString(imageBytes);
Run Code Online (Sandbox Code Playgroud)

  • 抱歉迟到了.我最终使用了基于你的芒果的解决方案!完全忘了接受它作为anwser tho. (3认同)

Ada*_*dam 6

  • 使用ImageIO.write()编写.
  • ByteArrayOutputStream包装字节数组,因此可以用作输出流.
  • 使用DatatypeConverter将字节数组转换为aa base64字符串,从6开始在核心Java中,不需要额外的库

ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageIO.write(image, "png", output);
DatatypeConverter.printBase64Binary(output.toByteArray());
Run Code Online (Sandbox Code Playgroud)


Raj*_*aju 5

接受的答案从 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;
}
Run Code Online (Sandbox Code Playgroud)

返回的 base64 文本可以在 HTML 页面中使用,如下例所示

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;
}
Run Code Online (Sandbox Code Playgroud)