我将一些图像存储为远程MySQL数据库中的longblob
,我需要为我的Android应用程序检索它们并显示为Bitmap
。我有一个PHP脚本设置来解析Android应用程序的SQL查询。
我尝试了什么:
我尝试在longblob
字段下面获取字符串,然后在其上使用getBytes()
。但显然,它不起作用。如果我显示字符串,则会显示大量字符(可读且不可读)。所以问题在于编码或从String转换为byte[]
(我认为)。
StringBuilder strStream = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(httpEntity.getContent()), 8);
String line = null;
while((line = reader.readLine()) != null) strStream.append(line);
Bitmap bitmap = BitmapFactory.decodeByteArray(strStream.toString().getBytes(), 0, strStream.length());
我需要的内容:有没有办法从存储在Bitmap
数据库中的远程longblob
创建MySQL
,我使用自定义PHP脚本?我完全确定脚本工作正常,我的代码100%正在处理变量httpEntity
。我甚至可以得到String
及其正确的值。唯一的问题是,我无法获得Bitmap
。
感谢。
答案 0 :(得分:1)
越简单越好:) PHP可以从数据库中输出blob
header('Content-Type: image/png');
echo $result['blob'];
当您使用网络浏览器请求此脚本时,您将看到PNG图像。然后是Android部分
InputStream in = new URL("http://img.io/read.php").openStream();
Bitmap bmp = BitmapFactory.decodeStream(in);
in.close();
这里没有必要通过字符串... Java中的字符串不仅仅是字节数组。它们带有语义,因此字节数组总是与编码方案相结合(默认为UTF-16LE)