Android - 如何从图库中选择图像,并保存以供以后使用?

时间:2016-10-06 09:26:23

标签: android sqlite imageview android-gallery

我目前正在学习android,我正在制作类似联系人的应用程序。

用户可以创建一个联系人,它将被添加到当前的sql lite数据库中。

我希望能够添加一个选项,在创建/编辑联系人时可以从图库中选择图像。

如何从手机的图库中选择图像,然后将该图像的位置保存到该个人联系人中,以便稍后显示?

1 个答案:

答案 0 :(得分:0)

使用此意图启动图像选择器

Intent intent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), 9000);

使用此功能检索图像

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 9000 && resultCode == RESULT_OK && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = {MediaStore.Images.Media.DATA};

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();

        ImageView imageView = (ImageView) findViewById(R.id.galpic);
        imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

    }

}

为了保存图像,将图像转换为字节数组,然后保存到db。位图是包含图像的位图对象

 ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
            byte[] b = baos.toByteArray();
 String string_file = Base64.encodeToString(b, Base64.DEFAULT);