【问题标题】:How to convert an Image to base64 string in java? [duplicate]如何在java中将图像转换为base64字符串? [复制]
【发布时间】:2016-07-29 06:33:56
【问题描述】:

它可能是重复的,但我在将图像转换为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 字符串。

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

我在这里错过了什么??

【问题讨论】:

  • 您如何确定这是不正确的 base 64 字符串?
  • 在线编码器返回大量 base64 字符串
  • 你能提供POST方法的代码吗?我遇到了同样的问题(张贴图片...)谢谢!

标签: java image base64


【解决方案1】:

问题是您将调用的toString() 返回到Base64.encodeBase64(bytes),它返回一个字节数组。所以你最后得到的是一个字节数组的默认字符串表示,它对应你得到的输出。

相反,您应该这样做:

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

【讨论】:

  • 解决了我的问题
  • String strBase64=Base64.encodeToString(byteArray, 0)
【解决方案2】:

我想你可能想要:

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

【讨论】:

  • 导入 org.apache.commons.codec.binary.Base64;我正在导入这个.. 这里 Base64 没有 getEncoder() 之类的东西
  • @setubasak 它是关于在 Java 8 中添加的 java.util.Base64
【解决方案3】:

这是为我做的。您可以将输出格式的选项更改为 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);

【讨论】:

  • 在哪里提供我的图像文件??
  • 这里,它被加载到imageBitmap中。方法 .compress 将其转换并编码为 baos
  • Base64.URL_SAFE 这些对我不起作用??要导入什么??
  • 抱歉,我刚刚注意到这与 android 无关。我会寻找一个可行的解决方案
猜你喜欢
  • 2013-04-19
  • 2013-07-04
  • 2016-08-30
  • 1970-01-01
  • 2013-02-15
  • 2011-02-16
  • 2011-06-17
  • 1970-01-01
相关资源
最近更新 更多