图像编辑后如何更新android画廊的缩略图预览

Posted

技术标签:

【中文标题】图像编辑后如何更新android画廊的缩略图预览【英文标题】:how to update thumbnails preview of android gallery after image edited 【发布时间】:2012-01-31 18:48:33 【问题描述】:

可能重复

Refreshing the thumbnail using MediaScanner

我在更新内置图库中的 android 中的缩略图时遇到了问题。实际上,我已经打开、编辑并保存了在图库中选择的图像。

我打开离开画廊并再次打开画廊,然后该图像的缩略图未更新。但是,我选择了图像,确实是编辑后的版本。

有人对此有解决方案吗?我进行了搜索,但我得到了关于使用 sendBroadcast() 刷新图库的答案,这似乎不会更新图像预览。

编辑

我不想删除现有文件,因为假设用户想用不同的名称保存文件,那么该文件不受影响

【问题讨论】:

***.com/questions/7805527/…的可能重复 @Pratik 请问,你有答案吗? 【参考方案1】:

两个建议。

试试getThumbnail。从 javadoc 中,我希望它能够重新生成最新的缩略图。 如果这不能更新缩略图,请尝试删除缩略图。

【讨论】:

我正在使用 Intent 打开 android 内置图库,而不是以编程方式创建图库【参考方案2】:

我找到了解决此问题的方法,在您请求新缩略图之前,您需要删除旧缩略图。为此使用 MediaStore 和 ContentResolver

private static void removeThumbnails(ContentResolver contentResolver, long photoId) 
Cursor thumbnails = contentResolver.query(Thumbnails.EXTERNAL_CONTENT_URI, null, Thumbnails.IMAGE_ID + "=?", new String[]String.valueOf(photoId), null);
for (thumbnails.moveToFirst(); !thumbnails.isAfterLast(); thumbnails.moveToNext()) 

    long thumbnailId = thumbnails.getLong(thumbnails.getColumnIndex(Thumbnails._ID));
    String path = thumbnails.getString(thumbnails.getColumnIndex(Thumbnails.DATA));
    File file = new File(path);
    if (file.delete()) 

        contentResolver.delete(Thumbnails.EXTERNAL_CONTENT_URI, Thumbnails._ID + "=?", new String[]String.valueOf(thumbnailId));

    


您可以从它的 URI 中获取 photoId,要从文件名中获取 URI,只需创建 File 并从中解析 URI

Uri uri = Uri.fromFile(file);

【讨论】:

以上是关于图像编辑后如何更新android画廊的缩略图预览的主要内容,如果未能解决你的问题,请参考以下文章

等距画廊图像缩略图

如何在 html 中创建具有较低分辨率图像的缩略图

如何在 Android 中使位图加载更快?

iOS13分享表:分享UIImage时如何设置预览缩略图

从设备的 file.uri 为科尔多瓦项目中的画廊图像动态创建低分辨率缩略图

增加管理员中的django-filer预览/缩略图图像