0

我有一些图像以longblobs 形式存储在远程 MySQL 数据库中,我需要为我的 Android 应用程序检索它们并显示为Bitmap. 我有一个 PHP 脚本设置来解析与 Android 应用程序之间的 SQL 查询。

我尝试过的: 我尝试获取longblob字段下方的字符串,然后getBytes()在其上使用。但显然,它不起作用。如果我显示字符串,则会显示大量字符(可读和不可读)。所以问题在于编码或从字符串转换为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());

我需要什么:有什么方法可以从存储在我使用自定义 PHP 脚本从 Android 连接的数据库中Bitmap的远程创建一个?我完全确定脚本工作正常,并且我的代码 100% 运行到变量. 我什至可以得到它的正确值。唯一的问题是,我无法获得.longblobMySQLhttpEntityStringBitmap

谢谢。

4

1 回答 1

1

越简单越好 :) PHP 可以从数据库中输出一个 blob

header('Content-Type: image/png');
echo $result['blob'];

当您使用 Web 浏览器请求此脚本时,您将看到一个 PNG 图像。然后是安卓部分

InputStream in = new URL("http://img.io/read.php").openStream();
Bitmap bmp = BitmapFactory.decodeStream(in);
in.close();

这里没有必要通过Strings...Java中的Strings不仅仅是字节数组。它们带有语义,因此字节数组总是与编码方案相结合(默认为 UTF-16LE)

于 2012-09-24T18:15:27.133 回答