Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 给定图像文件的完整路径,如何获取其缩略图?_Android_Android Image - Fatal编程技术网

Android 给定图像文件的完整路径,如何获取其缩略图?

Android 给定图像文件的完整路径,如何获取其缩略图?,android,android-image,Android,Android Image,我在网上搜索的答案(包括stackoverflow.com)似乎是通过画廊选择获得图像文件id的 我已经创建了自己的文件资源管理器。 那怎么做呢 我可以创建自己的小尺寸图像;但我认为,如果我们能利用现有的缩略图,速度会更快;如果它不存在,我更愿意创建一个缩略图,保存下来供以后使用 [更新:] 好的,谢谢你的建议。所以我不会在设备中创建缩略图,以避免占用太多空间。 然后最好执行两个步骤: 步骤1:查找图像文件的现有缩略图(如果存在)。 步骤2:如果没有缩略图,那么创建我自己的小尺寸位图(不保存它)

我在网上搜索的答案(包括stackoverflow.com)似乎是通过画廊选择获得图像文件id的

我已经创建了自己的文件资源管理器。 那怎么做呢

我可以创建自己的小尺寸图像;但我认为,如果我们能利用现有的缩略图,速度会更快;如果它不存在,我更愿意创建一个缩略图,保存下来供以后使用

[更新:] 好的,谢谢你的建议。所以我不会在设备中创建缩略图,以避免占用太多空间。 然后最好执行两个步骤: 步骤1:查找图像文件的现有缩略图(如果存在)。 步骤2:如果没有缩略图,那么创建我自己的小尺寸位图(不保存它)

如果我没有使用图库意图,那么如何执行步骤1

[更新2:] 我还想得到一个视频文件的缩略图。 我可以使用MediaMetadataRetriever在任何时间点获取帧,并将图像重新缩放为缩略图。但我发现它非常慢:我的文件夹中有4个视频文件,我可以感觉到延迟

因此,我认为检索现有缩略图的更好方法。 如果我只知道文件路径和文件名,我怎么能得到它?
我认为这个问题与我原来的问题相同,只是这样做更有意义。

您不应该为tumbnail使用特定的文件,尤其是不创建tumbnail。如果用户有很多图片,而您存储了在浏览器中查看的每张图片的一个tumbnail,该怎么办。这将产生大量重复和不需要的数据。每次调整图像大小的计算会使需要存储的数据量过大


我建议您在浏览器中的图像上有一个默认图标,然后在不同的线程中调整图像的大小,在调整图像大小时替换默认的tumbnail。

您可以动态缩小现有图像:

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;

BitmapFactory.decodeFile(image_path, opts);
int width = opts.outWidth;
int height = opts.outHeight;
然后

最后:

Bitmap bm = BitmapFactory.decodeFile(image_path,opts);

您可以在单独的线程范围内加载现有文件,并在需要时仅更新这些文件。

您可以使用ThumbnailUtils。使用此实用程序方法查找。可能适合您的需要,无需太多麻烦。创建重复的缩小尺寸的图像是一个糟糕的设计,因为它最终会产生不必要的数据

Bitmap resizedImage = ThumbnailUtils.extractThumbnail(rescaledImage, imagePixel, imagePixel);

谢谢你的建议。如果我想利用现有的缩略图(如果存在的话),有可能吗?我真的不明白这是怎么可能的,Java通常不支持检索有关文件的详细信息。即使是在电脑上,也很难获得有关缩略图之类的信息。谢谢。我知道如何创建小尺寸位图。我只是觉得如果它存在的话,使用现有的缩略图可能会更好?如果我不使用Gallery intent,是否可以检索到它?我个人认为,如果我首先得到一个“rescaledImage”位图(我需要调整它的大小,因为许多原始图像都有一个大尺寸),然后使用extractThumbnail得到一个小尺寸,我会按照Eudhan的建议一步完成。。您不需要重新缩放的图像。你可以把任何你想要的图像放进去,然后给它一个高度和宽度。。你会得到这个图像。这段代码是我的,我没有更改变量,仅此而已
Bitmap resizedImage = ThumbnailUtils.extractThumbnail(rescaledImage, imagePixel, imagePixel);