1

我一直在尝试使用以下代码从字节数组中生成图像数据 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 的结果传输到文件、复制整行并将其粘贴到 Chrome 中来测试数据 URL 输出。

我在 chrome 中看到的完全是空白的。如果我在 Chrome 检查器中检查它,就会出现一个大小正确的空白 JPG。

我尝试将其下载为 jpg 文件并使用 Windows 照片查看器打开它。它似乎已损坏:

损坏的图像样本

不过,左上角图像的唯一可见部分是正确的数据。

4

1 回答 1

0

实际问题是由于 logcat 的缓冲区大小受到限制引起的。

确实保存了正确的stringBuilder数据,但是当在日志中打印时,它会被有限的缓冲区大小截断。只需添加一个for循环,所有内容都会被打印出来。

有关 logcat 缓冲区大小的更多信息,请参阅此问题

于 2013-08-05T05:19:00.713 回答