来自android中的longblob的位图

时间:2012-09-24 15:51:12

标签: java android mysql database bitmap

我将一些图像存储为远程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

感谢。

1 个答案:

答案 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)