Java Base64编码在android之外不起作用

Java Base64编码在android之外不起作用,java,android,encoding,base64,android-camera2,Java,Android,Encoding,Base64,Android Camera2,如果我做了傻事,对不起。我试图做的是在android中从Camera2API中捕获图像,然后将图像转换为base64编码,下面是我的代码 private String getBase64Image(Bitmap bitmap) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 15, by

如果我做了傻事,对不起。我试图做的是在android中从Camera2API中捕获图像,然后将图像转换为base64编码,下面是我的代码

 private String getBase64Image(Bitmap bitmap) {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 15, byteArrayOutputStream);
    byte[] bytes = byteArrayOutputStream.toByteArray();
    String base64Image = Base64.encodeToString(bytes, Base64.NO_WRAP);
    return base64Image;
}

private void decodeBase64Image(String base64Image) {
    byte[] bytes = Base64.decode(base64Image, Base64.NO_WRAP);
    Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    imageView.setVisibility(View.VISIBLE);
    imageView.setImageBitmap(bitmap);
    saveFile(bytes);
}
这里是我如何捕捉图像的

@Override
        public void onImageAvailable(ImageReader imageReader) {
            Image image = imageReader.acquireLatestImage();
            ByteBuffer byteBuffer = image.getPlanes()[0].getBuffer();
            byte jpegBytes[] = new byte[byteBuffer.remaining()];
            byteBuffer.get(jpegBytes);
            Bitmap imageBitmap = BitmapFactory.decodeByteArray(jpegBytes, 0, jpegBytes.length);

            String base64Image = getBase64Image(imageBitmap);
            Log.d("mi", "widthpx:" + image.getWidth() + " heightpx:" + image.getHeight());
            Log.d("mi", "Base64Image:" + base64Image);
            decodeBase64Image(base64Image);
            image.close();
        }
    }, null);
上面的代码正常工作,将图像转换为base64编码,然后解码,并在我可以看到的imageview上设置。在这里工作还不错。但问题是,当我使用base64编码并尝试使用一些在线base64字符串到图像转换器时,它不会给我任何结果。下面是我如何得到base64编码字符串

/9/3/4/3/3/4号AAAAQSKKK9/4/3/4/4/4/3/3/3/3/3/3/3/3/3/3/3/3/3/3/3/3/3/7 7 7/[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[////////////////童童童童童童童童童童童童童童童童童童童童童童童童童童童童////////////////////////////////////////////[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[aaaaaaaaaaaaaaaecawqf/8qalbababaqacagiagidaqeacexexa0esezjrimeecyezqhqjkagx0f/eabcbaqbaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaearearearectfbev/aaawdaqaceqrad8nd6ndkndqndkndkndqprroe0au0agg1o+IMrI3MV+imyntfqrqmqmqmqmqmqmqmqmqmqmqmqmqmqmx1whpyxxx3h3hqqaqaqaqaqaqaqaqaqaqaqaqaqaqVaaaaabuaauefaruaabfauuabqaaaaaaaaaaaaaaaaaaaaaacackgdn5brhbd4exzz/K69A55XdtZNih7CKInsVBTtvGM4x1wm+qbxjcIsnyasvikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagocci0GJPGJQM6NNJYDOK02ABJRY1O0DGJTEK0DGJTEK0MGZQN2JOGRSANc6NaykabfnaikkikkikkikKWrQEkKWrQJPDCGKGOCCGIOAI6FBNcGhuangQAkakakakakaaQQQAkakakaaQQQQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQaQa2014年6月2日,香港/澳门特别行政区政府批准了一项新的政策,即:WWUE+UT5QRoZ+UT5g2MfOJ9kB0HP7Il8kUdRy+w+xB1HH7T7Qdhx+2H2g7DjPLF+z+wdRy+xftgOg5/ZF+YA6IZ84FKAJTG-CGAIGKAAAAAAAAAAAAAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAAG8KUDRY+w+w+w+XB1H7H7T7T7T7T7T7QDHX+2H2G7D7D7D7DJPLF+z+z+ZF+ZF+ZF+YA6IZG8IZG8IZ84FK8FK8FK8FK8FK8FK8FReoxzbWsy7Ytuc8I7QFJCisnakcckaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPNN6QM6NNANAWANAYLO0CAI6AEUBFFAA0KJCGEIYGMOBPQAAAFBUFARQBFRQAAADQCKGAKAI0KAGAGACM0BVABNEGLAZQAA86GAABOAQAFAA0554COQ62DXXHTD15+PCRhyo5KUUQAA2CA0RFGCY6QB1XDFI8SUQSB7JK4FJ7D7D7D7D7D7D7K5ZWDTTKKKKK8G8G8G8K8K8K7D7D7D7K5K5K5K5Z0K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K5K58.vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvBZGSYZO3xCCG3JOG8YKBKKGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA一种新的研究方法——一种新的研究方法——一种新的研究方法——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种新的研究——一种研究——一种新的研究——一种新的研究——一种新的研究——一种新的中国的研究——一种非非非非政府的研究——一种非非非非非政府的非政府组织——一种非政府的非政府组织——一种非政府的非政府组织——一种非政府的非政府的非政府组织——一种非政府组织——一种非政府的非政府的非政府的非政府组织——一种非政府组织——一种非政府的非政府的非政府的非政府的非政府的非政府组织——一种非政府的非政府的非政府组织RQ51N2SGL8QBQBTAAG12YOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

解决方案

正如@toble所回答的,我在Log.d()中没有得到完整的base64Image字符串,所以我对完整base64Image所做的记录如下所示

   private void logLargeString(String content) {
    if (content.length() > 3000) {
        Log.d("mi", content.substring(0, 3000));
        logLargeString(content.substring(3000));
    } else {
        Log.d("mi", content);
    }
}

希望这对其他人有所帮助。

您的base64字符串只包含jpeg图像的开头。只有图像的前60行包含实际的彩色像素

确保使用完整的base64字符串,您应该能够看到完整的图像。您可能使用了以下记录的字符串:

            Log.d("mi", "Base64Image:" + base64Image);

输出可能在logcat中被裁剪。

base64字符串仅包含jpeg图像的开头。只有图像的前60行包含实际的彩色像素

确保使用完整的base64字符串,您应该能够看到完整的图像。您可能使用了以下记录的字符串:

            Log.d("mi", "Base64Image:" + base64Image);

输出可能在logcat中被裁剪。

我使用了。谢谢@toble。。。。这正是问题所在。。。我将更新我的问题我如何解决这个问题,以便它可能对我使用的未来的人有所帮助。谢谢@toble。。。。这正是问题所在。。。我将更新我的问题,我如何解决这个问题,以便它可能有助于人们在未来