如何将从URL中检索的图像存储在SQLite数据库中?

我从url中检索图片。 而不是caching图像,它有可能将其存储在SQLite数据库中吗?

/** Simple Constructor saving the 'parent' context. */ public ImageAdapter(Context c) { this.myContext = c; } /** Returns the amount of images we have defined. */ public int getCount() { return this.myRemoteImages.length; } /* Use the array-Positions as unique IDs */ public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } /** Returns a new ImageView to * be displayed, depending on * the position passed. */ public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(this.myContext); try { URL aURL = new URL(myRemoteImages[position]); URLConnection conn = aURL.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); /* Buffered is always good for a performance plus. */ BufferedInputStream bis = new BufferedInputStream(is); /* Decode url-data to a bitmap. */ Bitmap bm = BitmapFactory.decodeStream(bis); bis.close(); is.close(); Log.v(imageUrl, "Retrieving image"); /* Apply the Bitmap to the ImageView that will be returned. */ i.setImageBitmap(bm); } catch (IOException e) { Log.e("DEBUGTAG", "Remtoe Image Exception", e); } /* Image should be scaled as width/height are set. */ i.setScaleType(ImageView.ScaleType.FIT_CENTER); /* Set the Width/Height of the ImageView. */ if(Build.VERSION.SDK_INT >= 11){ i.setLayoutParams(new Gallery.LayoutParams(450, 300)); return i; } else{ i.setLayoutParams(new Gallery.LayoutParams(125, 125)); return i; } } /** Returns the size (0.0f to 1.0f) of the views * depending on the 'offset' to the center. */ public float getScale(boolean focused, int offset) { /* Formula: 1 / (2 ^ offset) */ return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset))); } } 

编辑:设置imageAdapter加载图库中的图像

 ((Gallery) findViewById(R.id.gallery)) .setAdapter(new ImageAdapter(MainMenu.this)); 
 protected Drawable Imagehandler(String url) { try { url=url.replaceAll(" ", "%20"); InputStream is = (InputStream)this.fetch(url); Drawable d = Drawable.createFromStream(is, "src"); return d; } catch (MalformedURLException e) { System.out.println(url); System.out.println("error at URI"+e); return null; } catch (IOException e) { System.out.println("io exception: "+e); System.out.println("Image NOT FOUND"); return null; } } protected Object fetch(String address) throws MalformedURLException,IOException { URL url = new URL(address); Object content = url.getContent(); return content; } 

这将在运行时将你的imageUrl转换为Drawable,然后将Drawable设置为Gallery的Imageview

你可以将图像存储为数据库中的BLOB,

 public static byte[] urlToImageBLOB(String url) throws IOException { httpclient = new DefaultHttpClient(); entity = null; httpGet = new HttpGet(url); response = httpclient.execute(httpGet); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { entity = response.getEntity(); } return EntityUtils.toByteArray(entity); } 

获取

 public static Bitmap getImageFromBLOB(byte[] mBlob) { byte[] bb = mBlob; return BitmapFactory.decodeByteArray(bb, 0, bb.length); } 

//设置imageView.setImageBitmap(getImageFromBLOB(cursor.getBlob(object.getColumnIndex("book_thumb"))));

以下链接指出如​​何将数据存储在外部存储中: 外部存储

链接说明了放置文件的位置(如果要使用外部存储)以及如何检查外部存储是否可用。

编辑:如何访问文件,在“访问外部存储上的文件”主题下进行了解释。

您应该在API 8或更高版本中调用getExternalFilesDir()来获取表示您的应用程序根目录的文件。 然后,您可以像往常一样读取和写入文件(例如使用FileWriter和FileReader作为文本数据)