示例#1
0
        private Bitmap GetThunbailFromVideo(string filename, ThumbnailKind ScreenKind)
        {
            Bitmap thumb = ThumbnailUtils.CreateVideoThumbnail(filename,
                                                               ScreenKind);

            return(RotateBitmap(thumb, 90));
        }
示例#2
0
        public static Dictionary <long, string> GetMediaThumbnailsPaths(ContentResolver contentResolver, ThumbnailKind kind)
        {
            string[] columns =
            {
                MediaStore.Images.Thumbnails.Data,
                MediaStore.Images.Thumbnails.ImageId
            };

            var cursor = contentResolver.Query(MediaStore.Images.Thumbnails.ExternalContentUri, columns, $"{MediaStore.Images.Thumbnails.Kind} = {(int)kind}", null, null);

            var dic       = new Dictionary <long, string>();
            var dublicate = new HashSet <long>();

            if (cursor != null)
            {
                var count           = cursor.Count;
                var dataColumnIndex = cursor.GetColumnIndex(MediaStore.Images.Thumbnails.Data);
                var idColumnIndex   = cursor.GetColumnIndex(MediaStore.Images.Thumbnails.ImageId);

                for (var i = 0; i < count; i++)
                {
                    cursor.MoveToPosition(i);
                    var key   = cursor.GetLong(idColumnIndex);
                    var value = cursor.GetString(dataColumnIndex);
                    if (dic.ContainsKey(key))
                    {
                        dublicate.Add(key);
                        var file = new File(dic[key]);
                        if (file.Exists())
                        {
                            file.Delete();
                        }

                        file = new File(value);
                        if (file.Exists())
                        {
                            file.Delete();
                        }

                        contentResolver.Delete(MediaStore.Images.Thumbnails.ExternalContentUri, MediaStore.Images.Thumbnails.ImageId + "=?", new[] { key.ToString() });

                        dic.Remove(key);
                    }
                    else if (dublicate.Contains(key))
                    {
                        var file = new File(value);
                        if (file.Exists())
                        {
                            file.Delete();
                        }
                    }
                    else
                    {
                        dic.Add(key, value);
                    }
                }

                cursor.Close();
            }
            return(dic);
        }
示例#3
0
        /**
         *   * 获取视频的缩略图 先通过ThumbnailUtils来创建一个视频的缩略图,然后再利用ThumbnailUtils来生成指定大小的缩略图。
         *   * 如果想要的缩略图的宽和高都小于MICRO_KIND,则类型要使用MICRO_KIND作为kind的值,这样会节省内存。
         *   *
         *   * @param videoPath
         *   *   视频的路径
         *   * @param width
         *   *   指定输出视频缩略图的宽度
         *   * @param height
         *   *   指定输出视频缩略图的高度度
         *   * @param kind
         *   *   参照MediaStore.Images.Thumbnails类中的常量MINI_KIND和MICRO_KIND。
         *   *   其中,MINI_KIND: 512 x 384,MICRO_KIND: 96 x 96
         *   * @return 指定大小的视频缩略图
         *   */
        public static Bitmap GetVideoThumbnail(String videoPath, int width, int height, ThumbnailKind kind)
        {
            Bitmap bitmap = null;

            bitmap = ThumbnailUtils.CreateVideoThumbnail(videoPath, kind);
            bitmap = ThumbnailUtils.ExtractThumbnail(bitmap, width, height, ThumnailExtractOptions.RecycleInput);
            return(bitmap);
        }