将drawable中的图像作为文件读取

Posted

技术标签:

【中文标题】将drawable中的图像作为文件读取【英文标题】:Read images in drawable as File 【发布时间】:2016-08-23 12:31:08 【问题描述】:

我想以File 对象的形式读取drawable 文件夹中的所有图像,并将它们存储在File 的数组中。 有没有办法获取所有可绘制图像的列表并将它们作为文件读取?

编辑:我需要知道以下内容..

    如何从可绘制文件夹中收集所有图像。我的图像根据内容具有不同的有意义的名称。名称中没有共同的模式。

    如何将这些图像读取为File

【问题讨论】:

【参考方案1】:

不,因为它们不是设备上的文件。它们只是您的开发机器上的文件。资源是运行时 APK 本身中的条目。

【讨论】:

我应该如何获取所有图像?它们都有不同的不常见名称。【参考方案2】:

首先您需要将所有可绘制对象转换为位图并保存到本地存储,然后将其作为文件读取

你可以通过这个方法获取所有的Drawables

public Drawable[] getAllDrawables()
    

        Field[] ID_Fields = R.drawable.class.getFields();
        Drawable[] drawables = new Drawable[ID_Fields.length];
        for(int i = 0; i < ID_Fields.length; i++) 
            try 
                drawables[i] = ContextCompat.getDrawable(this,ID_Fields[i].getInt(null));
             catch (IllegalArgumentException | IllegalAccessException ignored) 
                return null;
            
        
        return drawables;
    

可能重复

Here

【讨论】:

可以将其转换为地图而不是位图,还有一半的问题是如何从可绘制文件夹中获取所有文件的集合。 通过上面的代码,我在 drawable 文件夹中看到了许多不需要的文件。在我这边,我添加了 8 张图像,但这里数组的长度为 85。我检查了磁盘中的可绘制文件夹是否有任何隐藏文件,但没有。你能帮忙只提取我在那里添加的那些图像文件吗? 因为在构建时 android 会生成默认的主题可绘制对象并将其添加到 apk,因此数组大小会增加,这导致您需要添加可绘制名称的唯一 id 并从具有唯一 id 的数组中过滤。跨度>

以上是关于将drawable中的图像作为文件读取的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 将 InkML 文件读取为图像或文本

使用 OpenCV(C++)读取文件夹中的任何 .jpg 图像 [关闭]

如何将图像添加到 Android Studio 中的“drawable”文件夹?

如何使用 Python 读取图像文件? [关闭]

在相机活动中将图像从drawable保存到sdcard

使用 OpenCV 读取文件夹中的有序图像序列