【问题标题】:What the original ID in MediaStore.Images.Thumbnails.getThumbnail?MediaStore.Images.Thumbnails.getThumbnail 中的原始 ID 是什么?
【发布时间】:2014-02-14 22:06:34
【问题描述】:

我使用gridView 来获取文件列表。但是不能用filelist.get(position)

我想通过使用来获得Thumbnails

MediaStore.Images.Thumbnails.getThumbnail(getActivity().getContentResolver(), origId, Images.Thumbnails.MICRO_KIND, null);

但是这里的图片origId 是什么???

这是指path 还是name

----------------------------------- --EDIT----------------------------------------

完整代码如下:

我想在getView 获取缩略图。

viewTag 是另一个类,它存储textview

所以viewTag.mFilename.setText(filename); 等于Textview.setText

public class LocalFileListAdapter extends BaseAdapter {

        private LayoutInflater mInflater ;
        private ArrayList<FileNode> mFileList ;
        private static final String TAG = "MJPEG Player" ;
        private Context mContext;

        public LocalFileListAdapter(LayoutInflater inflater, ArrayList<FileNode> fileList) {
            mInflater = inflater ;
            mFileList = fileList ;
        }

        public void GridAdapter(Context ctx) {
            // TODO Auto-generated method stub
            mContext = ctx; 
        }

        @Override
        public int getCount() {
            return mFileList == null ? 0 : mFileList.size() ;
        }

        @Override
        public Object getItem(int position) {
            return mFileList == null ? null : mFileList.get(position) ;
        }

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


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            ViewTag viewTag ;

            if (convertView == null) {

                convertView = mInflater.inflate(R.layout.filelist_row, null) ;

                TextView fileListName = (TextView) convertView.findViewById(R.id.fileListName);
                fileListName.setSelected(true);

                viewTag = new ViewTag(mContext , (ImageView) convertView.findViewById(R.id.fileListThumbnail), 
                        (ImageView) convertView.findViewById(R.id.select) ,
                        mFileList.get(position) , fileListName , 
                        (TextView) convertView.findViewById(R.id.fileListSize) , 
                        (ImageView) convertView.findViewById(R.id.video_layout) , 
                        (TextView) convertView.findViewById(R.id.fileListTime));

                convertView.setTag(viewTag) ;

            } else {
                viewTag = (ViewTag) convertView.getTag() ;
            }

            viewTag.mFileNode = mFileList.get(position) ;
            String filename = viewTag.mFileNode.mName.substring(viewTag.mFileNode.mName.lastIndexOf("/") + 1) ;

            viewTag.mFilename.setText(filename);

                            MediaStore.Images.Thumbnails.getThumbnail(getActivity().getContentResolver(), Long.parseLong(mFileList.get(position)), Images.Thumbnails.MICRO_KIND, null);

            return convertView ;
        }
    }

如何获取图片ID?

【问题讨论】:

    标签: android thumbnails android-image


    【解决方案1】:

    这只是每张图片的 ID。

    来自文档:

    缩略图的原始图像 类型:整数(来自图像表的 ID)

    http://developer.android.com/reference/android/provider/MediaStore.Images.Thumbnails.html#IMAGE_ID

    所以,它既不是路径,也不是名称。它是 MediaStore 中每个图像的内部生成的 ID。它通常是图像的 Uri。

    【讨论】:

    • 但是如何获取图片ID?
    • 当您打开图像选择器选择图像时,它将返回 Uri。您是否尝试直接从文件夹中获取图像的缩略图?
    • 不,我使用 AsyncTask 加载文件。并使用另一个 AsyncTask 来获取缩略图。但它显示内存不足。所以我想将方法​​从位图更改为 MediaStore.Images.Thumbnails.getThumbnail。
    【解决方案2】:

    您正在使用以下方法:

    public static Bitmap getThumbnail (ContentResolver cr, long origId, int kind, BitmapFactory.Options options)

    参数:

    cr -> ContentResolver 用于向 MediaProvider 发送查询。

    origId -> 与感兴趣的缩略图关联的原始图像 ID。

    kind -> 要获取的缩略图的类型。应该是 MINI_KIND 或 MICRO_KIND。

    options -> 仅在解码 Bitmap 时用于 MINI_KIND 退货 位图实例。如果与 origId 关联的原始图像不存在或内存不足,则可能为 null。

    如果你有 Image Uri 那么你会从下面得到 id:

    imageUri.getLastPathSegment()
    

    String wholeID = DocumentsContract.getDocumentId(imageUri);
    String id = wholeID.split(":")[1];
    Long origId = Long.parseLong(id);
    

    现在你必须将 origId 传递给 getThumbnail()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多