如何在java中将图像转换为base64字符串?

2022-09-01 10:33:39

它可能是一个重复,但我遇到了一些问题,将图像转换为发送它。我试过这个代码,但它给了我错误的编码字符串。Base64Http 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

编辑:它是如何复制的??与我重复的链接没有给我转换字符串的解决方案。

我在这里错过了什么??


答案 1

问题是您正在返回返回字节数组的调用。因此,您最终得到的是字节数组的默认字符串表示形式,它对应于您获得的输出。toString()Base64.encodeBase64(bytes)

相反,您应该执行以下操作:

encodedfile = new String(Base64.encodeBase64(bytes), "UTF-8");

答案 2

我想你可能想要:

String encodedFile = Base64.getEncoder().encodeToString(bytes);

推荐