我一直在尝试使用以下代码从字节数组生成图像数据URL:
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的结果传送到文件来测试数据URL输出,复制整行,并将其粘贴到Chrome中。
我在chrome中看到的是完全空白的。如果我在Chrome检查器中检查它,则会显示一个尺寸正确的空白JPG。
我尝试将其下载为jpg文件并使用Windows Photo Viewer打开它。它似乎已被破坏:
左上角图像中唯一可见的部分是正确的数据。
答案 0 :(得分:0)
实际问题是由logcat的缓冲区大小限制造成的。
stringBuilder
确实保存了正确的数据,但是当在日志中打印时,它会被有限的缓冲区大小截断。只需添加for
循环,即可打印所有内容。
有关logcat缓冲区大小的详细信息,请参阅this question。