如何在java中将Image转换为base64字符串?
它可能是重复但我面临一些问题,将图像转换为Base64
发送给Http Post
。 我试过这段代码,但它给了我错误的编码字符串。
public static void main(String[] args) { File f = new File("C:/Users/SETU BASAK/Desktop/a.jpg"); String encodstring = encodeFileToBase64Binary(f); System.out.println(encodstring); } private static String encodeFileToBase64Binary(File file){ String encodedfile = null; try { FileInputStream fileInputStreamReader = new FileInputStream(file); byte[] bytes = new byte[(int)file.length()]; fileInputStreamReader.read(bytes); encodedfile = Base64.encodeBase64(bytes).toString(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return encodedfile; }
输出: [B @ 677327b6
但我在许多在线编码器中将同一图像转换为Base64
,并且它们都给出了正确的大Base64字符串。
编辑:怎么重复? 我的副本链接并没有给我转换字符串我想要的解决方案。
我在这里失踪了什么?
问题是你要返回调用Base64.encodeBase64(bytes)
的toString()
,它返回一个字节数组。 所以你最后得到的是字节数组的默认字符串表示,它对应于你得到的输出。
相反,你应该这样做:
encodedfile = new String(Base64.encodeBase64(bytes), "UTF-8");
我想你可能想要:
String encodedFile = Base64.getEncoder().encodeToString(bytes);
这样做对我来说。 您可以将输出格式的选项更改为Base64.Default。
// encode base64 from image ByteArrayOutputStream baos = new ByteArrayOutputStream(); imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); byte[] b = baos.toByteArray(); encodedString = Base64.encodeToString(b, Base64.URL_SAFE | Base64.NO_WRAP);
- sun.misc.BASE64Decoder在java应用程序中显示错误
- Java无法使用带图像的html发送电子邮件
- 尝试将String编码/解码为Base64时出错
- 为什么NPE使用DatatypeConverter的静态方法?
- Java BufferedImage到PNG格式的Base64字符串
- 关于Eclipse上的sun / misc / BASE64Encoder的错误
- 如何在swift中将字符串(在Java中使用加密MessageDigest)编码为Base64字符串?
- Android + Java从服务器上的URL获取图像并作为字符串传递给客户端:Base64解码和编码无法正常工作
- 使用Base64的AES会为同一纯文本生成不同的加密结果吗?