从内部存储Kivy Python加载图像

时间:2019-11-23 09:35:03

标签: python android kivy kivy-language

我正在寻找有关通过我的kivy应用程序从内部存储文件管理器加载图像的解决方案。

为了进行测试,我需要从内部存储中选择图像,然后使用opencv将其转换为灰度图像。

我已经尝试过filechooserlistview,但是我无法访问内部存储。

我还在我的buildozer.spec文件中添加了以下提到的行。              android.permissions = READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE

最近两天我一直在寻找这种解决方案,但我没有得到任何合适的结果。

如果有的话,请共享代码。 预先感谢

2 个答案:

答案 0 :(得分:2)

在较新的Android系统中,用于访问存储的buildozer权限请求不适用于kivy。
要获得这些权限,您必须通过以下方式在您的应用程序中要求它们:

from android.permissions import request_permissions, Permission
request_permissions([Permission.WRITE_EXTERNAL_STORAGE,
                     Permission.READ_EXTERNAL_STORAGE])

...,系统将要求用户使用您的应用访问存储。
android库包含在buildozer版本中,因此您只需要执行该请求即可。

要获取内部存储路径:

from android.storage import primary_external_storage_path
SD_CARD = primary_external_storage_path()

请注意,这是系统的虚拟(内部)SD卡。

答案 1 :(得分:0)

尝试使用路径/ storage / emulated / 0 /

例如,在您的.kv文件中提及

#:import platform kivy.utils.platform
FileChooserListView:
    rootpath: '/storage/emulated/0/' if platform == 'android' else '/'