gpt4 book ai didi

Java - 另一个 "BitmapFactory.decodeByteArray always null"

转载 作者:行者123 更新时间:2023-11-29 23:13:09 31 4
gpt4 key购买 nike

我有一个图像以这种形式存储在数据库中

"/9j/4AAQSkZJRgABAQAAAQABAAD/2w <...> igD//2Q=="

所以绝对是base64编码的。

我通过 php 函数获取它:

...
$query = $db->prepare("SELECT `Data` FROM `UserPicture` WHERE `UserId` = ?");

$query->bind_param('i', $id);
$query->execute();
$query->bind_result($data);
$query->fetch();

echo base64_encode($data);

Android 通过调用获取它:

StringBuffer result = m_dbi.getResult(Constants.SERVER_HOST_PHP + "/get_user_picture.php", params, "GET");

调试我发现结果是正确的。

我将 result.toString() 传递给 writeImageToFile(String pic) ,它执行以下操作:

...
byte[] decodedByte = Base64.decode(pic, Base64.DEFAULT);
Bitmap bm = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
...

pic 以及 decodedByte.length 都是正确的,但 bm 始终为 null .

我尝试将Base64.DEFAULT更改为NO_PADDINGNO_WRAP,但始终为空。

可能是什么原因?

最佳答案

导致该问题的原因是您使用 mysqlireal_escape_string() 将图像保存在 BLOB 中。与任何字符串转义方法一样,此方法适用于文本,并更改​​其视为无效字符的内容。将其应用于图像而不是字符串会损坏图像。

应使用 this Oracle blog entry 中描述的过程来存储 BLOB ,使用 send_long_data() 并且不转义。

关于Java - 另一个 "BitmapFactory.decodeByteArray always null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27985014/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com