android如何获取SD卡中的特定图像

时间:2011-06-21 11:04:38

标签: android

我希望 sdcard 中出现任何一张图片。 我只知道image名称。 但是如何在程序中检索特定图像(包括路径)。并且还要转换为bitmap或存储在位图变量中 我怎样才能做到这一点? 谢谢

1 个答案:

答案 0 :(得分:1)

在这里,您可以在SDCard中显示所有图像,当您单击其中一个图像时,您将获得所选图像的路径:

try {
        // Set up an array of the Thumbnail Image ID column we want
        String[] projection = { MediaStore.Images.Thumbnails._ID };
        // Create the cursor pointing to the SDCard
        cursor = managedQuery(
                MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                projection, // Which columns to return
                null, // Return all rows
                null, MediaStore.Images.Thumbnails.IMAGE_ID);


        // Get the column index of the Thumbnails Image ID
        columnIndex = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);

        GridView sdcardImages = (GridView) findViewById(R.id.gallary);
        sdcardImages.setAdapter(new ImageAdapter(this));

        // Set up a click listener
        sdcardImages.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView parent, View v,
                    int position, long id) {
                // Get the data location of the image
                String[] projection = { MediaStore.Images.Media.DATA };
                cursor = managedQuery(
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                        projection, // Which columns to return
                        null, // Return all rows
                        null, null);
                columnIndex = cursor
                        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToPosition(position);
                // Get image filename
                String imagePath = cursor.getString(columnIndex);
                // Use this path to do further processing, i.e. full screen
                // display
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }

这是ImageAdapter:

/**
 * Adapter for our image files.
 */
private class ImageAdapter extends BaseAdapter {

    private Context context;

    public ImageAdapter(Context localContext) {
        context = localContext;
    }

    public int getCount() {
        return cursor.getCount();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView picturesView;
        if (convertView == null) {
            picturesView = new ImageView(context);
            // Move cursor to current position
            cursor.moveToPosition(position);
            // Get the current value for the requested column
            int imageID = cursor.getInt(columnIndex);
            // Set the content of the image based on the provided URI
            picturesView.setImageURI(Uri.withAppendedPath(
                    MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""
                            + imageID));
            picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            picturesView.setPadding(8, 8, 8, 8);
            picturesView
                    .setLayoutParams(new GridView.LayoutParams(100, 100));
        } else {
            picturesView = (ImageView) convertView;
        }
        return picturesView;
    }
}

如果您知道确切的路径和图片名称,则可以使用以下内容获取Bitmap

Bitmap bitmap = BitmapFactory.decodeFile("yourImageDirectory" + "yourImageName.png");