使用java将图像转换为base64
我需要将图像对象转换为base64对象,以便将其加载到客户端的标记中。
但是,我似乎无法弄清楚如何解决这个问题。 是否有人为此我可以轻松使用一段代码?
这就是我用来将外部图像链接转换为图像对象的方法
Image image = null; URL url = new URL(request.getParameter("hdn_path")); image = ImageIO.read(url);
我不确定我是否正确的方式。
使用Apache IOUtils
和Base64
:
byte[] imageBytes = IOUtils.toByteArray(new URL("..."))); String base64 = Base64.getEncoder().encodeToString(imageBytes);
- 使用ImageIO.write()编写。
- ByteArrayOutputStream包装字节数组,因此可以用作输出流。
- 使用DatatypeConverter将字节数组转换为aa base64字符串,从6开始在核心Java中,不需要额外的库
例
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页面中使用,如下例所示