目标
我的目标是从我的服务器下载图像。但是,作为blob字段的图像将存储在数据库中,而不是图像的链接。
我做了什么
我实际上已经下载了图像,但是传递了图像的路径并且从文件中下载了该图像。但是,我正在尝试编辑我的代码,因此它需要Blob字符串(从服务器下载)并加载此图像。以下是我的代码。
我认为问题是
我最大的问题在于尝试
我将“blob”作为字符串参数。 (错误的是1号?)
这是urldisplay。但是,BitmapFactory.decodeStream()
需要一个InputStream。但是如果我将我的参数从String更改为InputStream。
我在以下代码中遇到错误:无法解析方法(java.lang.string)
new DownloadImageTask(holder.imageview).execute(ArrayListStudents.get(position).getImage());
如果我将所有设置和图像的getter更改为InputStream,我会收到一个错误,我调用student.setImage(jRealObject.getString("cimage"));
从“GetString”列中获取数据
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];// this parameter once had url of image
//but now it has the image bitmap.
Bitmap cImg1= null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
// cImg1= BitmapFactory.decodeStream(in);
cImg1=urldisplay;//Assign strings to BitMap?
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return cImg1;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
答案 0 :(得分:0)
使用它将BLOB解码为位图:
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];// this parameter once had url of image
Bitmap cImg1= null;
try {
byte[] byteArray = DBcursor.getBlob(urldisplay);
cImg1 = BitmapFactory.decodeByteArray(byteArray, 0 ,byteArray.length);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return cImg1;
}