MonoDroid drawable.createfromstream

时间:2011-05-20 06:55:39

标签: android drawable xamarin.android

我正在将我的sqlite数据库中的图像读入MemoryStream。我寻找内存流的开头,然后将其传递给Drawable.CreateFromStream,它崩溃了。我通过将其保存到文件并打开文件来检查流包含正确的数据。

无法找到有关如何将不在资源中的图像加载到imageView中的任何示例。

任何帮助?

1 个答案:

答案 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数据库读取一个图像并放入输入流然后从流中创建图像,就像我在上面的函数中所做的那样。