如何生成要在数据URI中使用的图像的base64字符串?
我有一个Base64图像编码问题,希望有人可以提供帮助。我正在尝试在我的网页中使用数据uri(即<img src="data:image/png;base64,iVBORw..."/>
与org.apache.commons.codec.binary.Base64
v1.8生成png图像的base64字符串。
要生成我使用过的base64字符串:
Base64.encodeBase64URLSafeString(imageFile)
问题是浏览器无法渲染图像。我将这个生成的字符串与一个有效的字符串进行了比较,我注意到差异是Apache Base64版本有“_”和“ - ”字符而不是“/”和“+”。从互联网上我看到有不同的Base64格式,所以我认为Apache的实现与浏览器不兼容。
所以我想知道是否有一个库可以实现适合我的目的的base64格式?我目前的解决方法是只替换字符,但我宁愿使用库。
答案 0 :(得分:4)
根据Base64.encodeBase64URLSafeString方法的javadoc,这似乎是设计的。查看我提供的链接,它在javadoc中说明了这个:
使用base64算法的URL安全变体对二进制数据进行编码,但不会对输出进行分块。 url-safe变体会发出 - 而_而不是+和/字符。注意:不添加填充。
因此,您要确保使用url-unsafe变体。这就是名为encodeBase64的方法。请改用此方法:
Base64.encodeBase64(imageFile)
答案 1 :(得分:1)
class ConvertToBase64 {
public static void main(String[] args) throws Exception {
byte[] b = "Ha".getBytes("UTF-8");
System.out.println("bytes: " + b.length);
javax.xml.bind.DatatypeConverter.printBase64Binary(b);
}
}