android中有可能从MySQL数据库中检索图像并在imageview中显示它吗?

时间:2014-01-31 05:17:08

标签: android listview imageview

我打算创建一个这样的活动源:

Activity Feed

我想知道,我将如何检索图像以及如何将其存储在我的MySQL数据库中。救救我!

2 个答案:

答案 0 :(得分:2)

  1. 下载图片
  2. 将其另存为数据库中的字符串
  3. 以下是如何操作

    1. 要下载图像,请使用Universal Image Loader

      ImageLoader imageLoader = ImageLoader.getInstance();
      imageLoader.init(ImageLoaderConfiguration.createDefault(context));
      OR
      ImageLoaderConfiguration config = new
          ImageLoaderConfiguration.Builder(context)
          .maxImageWidthForMemoryCache(800)
          .maxImageHeightForMemoryCache(480)
          .httpConnectTimeout(5000)
          .httpReadTimeout(20000)
          .threadPoolSize(5)
          .threadPriority(Thread.MIN_PRIORITY + 3)
          .denyCacheImageMultipleSizesInMemory()
          .build();
      imageLoader.init(config);
      options = new DisplayImageOptions.Builder()
          .showStubImage(R.drawable.loading)
          .cacheInMemory()
          .cacheOnDisc()
          .build();
      imageLoader.displayImage(ProductsImageURL,imagView,options, new ImageLoadingListener(){});
      
    2. 在此ImageLoadingListener中,您将获得一个在加载完成时调用的方法并将图像另存为字符串

      或建立任何http连接以下载图片How to download and save an image in Android

      1. 下载图像后,将其转换为字符串并将其存储在数据库中

        public Bitmap StringToBitMap(String encodedString) {
            try {
                byte[] encodeByte = Base64.decode(encodedString, Base64.DEFAULT);
                Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0,
                        encodeByte.length);
                return bitmap;
            } catch (Exception e) {
                e.getMessage();
                return null;
            }
        }
        
        public String BitMapToString(Bitmap bitmap) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
            byte[] b = baos.toByteArray();
            String temp = Base64.encodeToString(b, Base64.DEFAULT);
            return temp;
        }
        

答案 1 :(得分:0)

如果您想将图像本身存储到数据库中,以下是一般步骤。

我。使用其URL检索图像并将其作为byte []保存在内存中。有几种方法可以做到这一点,包括创建一个ByteArrayBuffer并在其末尾附加字节。然后,您可以使用ByteArrayBuffer.toByteArray()检索最终字节[]。

II。您需要创建一个包含BLOB类型列的表,例如

CREATE TABLE image (id INTEGER PRIMARY KEY AUTOINCREMENT, url TEXT, data BLOB)

III。然后,您可以像插入任何其他数据类型一样插入图像byte [],例如,通过创建ContentValues然后将其传递给SQLiteDatabase.insert()。

IV。从SQLite中检索byte []并构建一个图像。使用Cursor.getBlob()来获取byte [],然后执行:

ByteArrayInputStream byteArrayImageStream = new ByteArrayImageStream(yourByteArray);
Bitmap yourImage = BitmapFactory.decodeStream(byteArrayImageStream);