代码之家  ›  专栏  ›  技术社区  ›  Przemek

在Kivy中显示android存储中的图像时出现黑色方块

  •  0
  • Przemek  · 技术社区  · 6 年前

    我正在用Kivy/Python开发一些简单的应用程序。我在显示之前通过摄像头保存在android存储中的图像时遇到了一些问题。下面我发布了一个take\u shot方法,该方法可以拍摄照片并将其保存在android中的/storage/simulated/0/Kalkulator/dir中。之后,图片的路径将存储在sqlite数据库中。

    def take_shot(self,name,when):
        if kiedy == 'before':
            self.before='/storage/emulated/0/Kalkulator/'+name+when+'.jpg'
            camera.take_picture(self.before,self.done(when))  
        elif kiedy == 'after':
            self.after = '/storage/emulated/0/Kalkulator/' + name + when+'.jpg'
            camera.take_picture(self.after, self.done(when))
    

    下面的代码显示用于读取文件的方法,其中 数据 正在从数据库获取。当我试图显示android存储中的文件时,kivy只显示黑色方块。当我尝试显示应用程序目录中的图像时 './文件/照片/irina。jpg' 一切正常。

        if str(data[5])=='Empty':
            before=Image(source='./files/photos/irina.jpg', 
                  keep_ratio=True,size_hint= (1,None),height=dp(400))
        else:
            before = Image(source=str(dane[5]), keep_ratio=True,size_hint= 
                         (1,None),height=dp(400))
        if str(data[6]) == 'Empty':
            after = Image(source='./files/photos/irina.jpg', 
                       keep_ratio=True,size_hint= (1,None),height=dp(400))
        else:
            after = Image(source=str(dane[6]), keep_ratio=True,size_hint= 
                       (1,None),height=dp(400))
        photos.add_widget(before)
        photos.add_widget(after)
        self.ids.box.add_widget(photos)
    

    问题出在哪里?我在日志中没有任何错误。

    我看到kivy没有显示任何分辨率更高的图像。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mikhail Gerasimov    6 年前

    如果你确定这与图片大小有关,我想你可以做以下事情:

    • 尝试使用kivy master branch(使用 kivy==master 在buildozer的需求中)构建apk:bug可能会在那里修复

    • 尝试使用其他 image provider (套 KIVY_IMAGE pil ).

    • 尝试 reduce image size 使用枕头。

    • 项目报告发布 github

    • 寻求kivy用户支持方面的帮助 google group