从字节数组使用android.util.Base64.encodeToString创建图像数据Url
我一直在尝试使用以下代码从字节数组生成图像数据URL:从字节数组使用android.util.Base64.encodeToString创建图像数据Url,android,base64,data-url,Android,Base64,Data Url,我一直在尝试使用以下代码从字节数组生成图像数据URL: ByteArrayOutputStream byteArrayOutStream = new ByteArrayOutputStream(); /* Fill byteArrayOutStream with data */ StringBuilder stringBuilder = new StringBuilder(); String encodedData = Base64.encodeToString(byteArrayOutS
ByteArrayOutputStream byteArrayOutStream = new ByteArrayOutputStream();
/* Fill byteArrayOutStream with data */
StringBuilder stringBuilder = new StringBuilder();
String encodedData = Base64.encodeToString(byteArrayOutStream.toByteArray(),
Base64.NO_WRAP);
stringBuilder.append("data:image/jpeg;base64,");
stringBuilder.append(encodedData);
// Log the result
android.util.Log.d("Base64Test", stringBuilder.toString());
byteArrayOutStream包含正确的数据,因为我已经测试过将其保存为jpg文件并在设备上查看
我通过将logcat的结果管道化到一个文件中,复制整行内容,并将其粘贴到Chrome中来测试数据URL输出
我在chrome中看到的是完全空白的。如果我在Chrome inspector中检查它,就会看到一个大小正确的空白JPG
我试着将其下载为jpg文件,并用Windows照片查看器打开它。它似乎被破坏了:
但左上角图像唯一可见的部分是正确的数据。实际问题是由于logcat的缓冲区大小受到限制而导致的 stringBuilder确实保存了正确的数据,但是在日志中打印时,它会被有限的缓冲区大小截断。只需添加一个for循环,所有内容都将打印出来 有关logcat缓冲区大小的更多信息,请参阅