无法打开从base64

时间:2017-08-30 15:49:35

标签: android image android-intent base64

我正在通过Intent发送从base64解码的图像,但外部应用无法读取图像。我想这是转换的一部分。这是我转换和发送图像的方式:

public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {


                    if(isStoragePermissionGranted()){
                        try {
                            if(url != null) {
                                FileOutputStream fos;
                                fos = context.openFileOutput("img.png", Context.MODE_PRIVATE);
                                System.out.println(url);
                                byte[] decodedStr = Base64.decode(url, Base64.NO_WRAP);
                                fos.write(decodedStr);

                                Intent sendIntent = new Intent();
                                sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                sendIntent.setAction(Intent.ACTION_SEND);
                                File imagePath = new File(String.valueOf(context.getFilesDir()));
                                File newFile = new File(imagePath, "img.png");
                                sendIntent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".FileProvider", newFile));
                                sendIntent.setType("image/png");

                                getContext().startActivity(sendIntent);
                                fos.flush();
                                fos.close();
//                                Toast.makeText(context.getApplicationContext(), "Downloading File...", Toast.LENGTH_LONG).show();
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

我得到的base64看起来像这样(我无法将其转换为在线转换器上的图像,但是如果我删除最后一个字符,我可以看到我图像的顶部):

data:image/png;base64,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

我尝试使用Base64.NO_PADING,但这没有帮助。这个base64有什么问题?

感谢您的帮助和时间!

1 个答案:

答案 0 :(得分:1)

您需要删除"data:image/png;base64,"

String imageB64 = url.substring(22);
byte[] decodedStr = Base64.decode(imageB64, Base64.NO_WRAP);
相关问题