我正在将我的sqlite数据库中的图像读入MemoryStream。我寻找内存流的开头,然后将其传递给Drawable.CreateFromStream,它崩溃了。我通过将其保存到文件并打开文件来检查流包含正确的数据。
无法找到有关如何将不在资源中的图像加载到imageView中的任何示例。
任何帮助?
答案 0 :(得分:0)
private static InputStream fetch(String urlString)
throws MalformedURLException, IOException {
conn = (HttpURLConnection)(new URL(urlString)).openConnection();
conn.setDoInput(true);
conn.connect();
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(urlString);
HttpResponse response = httpClient.execute(request);
return conn.getInputStream();
}
Resources res;
// ***********New Function For Fetching
public static Drawable LoadImage(String URL, BitmapFactory.Options options) {
Drawable drawable = null; Bitmap bm = null;
try {
if (fetch(URL) != null) {
try {
InputStream obj = (InputStream)fetch(URL);
bm = BitmapFactory.decodeStream(obj,null,options);
obj.close();
conn.disconnect();
} catch(OutOfMemoryError e){}
catch(IndexOutOfBoundsException e){}
drawable = new BitmapDrawable(bm);
return drawable;
} else {
bitmap = BitmapFactory.decodeResource(
DefaultDisplay.mContext.getResources(),
R.drawable.profileplaceholder);
drawable = new BitmapDrawable(bitmap);
return drawable;
}
} catch (Exception e) {
Log.e("GUIMethodClasas", "fetchDrawable failed", e);
return null;
}
}
这是从URL获取图像的功能。在这个函数中,我从URL获取数据并通过Fetch函数将其放入InputStream,然后将此流转换为Drawable和Bitmap对象。
在你的情况下,你应该从SQLite数据库读取一个图像并放入输入流然后从流中创建图像,就像我在上面的函数中所做的那样。