使用Sqlite DB中的URL显示图像

时间:2011-09-19 10:23:29

标签: android sqlite

我想将特定网址中的图片保存到sqlite db和 然后从数据库中显示它。任何人都可以告诉我如何 那样做。

提前致谢。

此致 Raghav Rajagopalan

1 个答案:

答案 0 :(得分:0)

试试这段代码。

   URL url = new URL("your image url");
    URLConnection ucon = url.openConnection();
    InputStream is = ucon.getInputStream();
        BufferedInputStream bis = new BufferedInputStream(is,128);
        ByteArrayBuffer barb= new ByteArrayBuffer(128);
         //read the bytes one by one and append it into the ByteArrayBuffer barb
         int current = 0;
         while ((current = bis.read()) != -1) {
                 barb.append((byte) current);
         }

         ContentValues filedata= new ContentValues();
        //TABLE_FIELD = a field in the database table of type text
         filedata.put(TABLE_FIELD,barb.toByteArray());
        //TABLE_NAME = a table in the database with a field TABLE_FIELD 
         db.insert(TABLE_NAME, null, filedata);

            //Retriving Data from DB:
    //select the data
    Cursor cursor = db.query(TABLE_STATIONLIST, new String[] {TABLE_FIELD},null, null, null, null, null);
    //get it as a ByteArray
           //reading as Binary large object(BLOB)
    byte[] imageByteArray=cursor.getBlob(1);

    //the cursor is not needed anymore so release it
    cursor.close();


Bitmap image=getbyteAsBitmap(imageByteArray);



//use this method to convert byte[] to bitmap


    private  Bitmap getbyteAsBitmap(byte[] bytedata){
            if(bytedata!=null){
                ByteArrayInputStream imageStream = new ByteArrayInputStream(bytedata);
                Bitmap theImage = BitmapFactory.decodeStream(imageStream);
                //theImage=MediaProcesser.getRoundedCornerBitmap(theImage, 5);
                return theImage;
            }else{
                return null;
            }
        }