【问题标题】:Loading images from internal storage kivy python从内部存储kivy python加载图像
【发布时间】:2019-11-23 09:35:03
【问题描述】:

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

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

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

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

过去两天我一直在寻找这个解决方案,但我还没有得到任何合适的结果。

如果您有任何代码,请分享。 提前致谢

【问题讨论】:

  • 非常感谢@ChitkaranSingh 的快速响应。是否可以通过我们的安卓应用程序在文件管理器中创建文件夹?我必须在哪里存储转换后的图像。如果您有任何与此相关的信息,请与我分享。

标签: python android kivy kivy-language


【解决方案1】:

在较新的 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 卡。

【讨论】:

  • 感谢您的澄清。使用您的逻辑后,它可以在我朋友的具有外部存储的手机上运行。但是我没有外部存储。我只有我的默认内部存储。当我单击文件选择器列表时,它只显示空白.. 有没有可能从我的内部存储中选择文件?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-10-24
    • 2012-06-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2022-01-01
    相关资源
    最近更新 更多