我正在寻找一种解决方法来 通过 kivy 访问 Android 相机,或者我可以 与 kivy 集成 以访问相机的库。
我正在为 android 开发一个应用程序,但使用 python-kivy 作为 UI,
任何事情都会非常感激,
多谢。
原文由 Plaix 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在寻找一种解决方法来 通过 kivy 访问 Android 相机,或者我可以 与 kivy 集成 以访问相机的库。
我正在为 android 开发一个应用程序,但使用 python-kivy 作为 UI,
任何事情都会非常感激,
多谢。
原文由 Plaix 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是我的示例代码,适用于 Android。只需导入该文件 https://github.com/kivy/plyer/blob/master/plyer/platforms/android/camera.py 另外,不要忘记添加 CAMERA 权限以显示。
主要文件:
__version__ = '1.0'
import kivy
# importing file from https://github.com/kivy/plyer/blob/master/plyer/platforms/android/camera.py
# I downloaded it and saved it in the same directory:
from camera import AndroidCamera
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty, StringProperty
import base64
class MyCamera(AndroidCamera):
pass
class BoxLayoutW(BoxLayout):
my_camera = ObjectProperty(None)
# /sdcard means internal mobile storage for that case:
image_path = StringProperty('/sdcard/my_test_photo.png')
def __init__(self, **kwargs):
super(BoxLayoutW, self).__init__()
self.my_camera = MyCamera()
def take_shot(self):
self.my_camera._take_picture(self.on_success_shot, self.image_path)
def on_success_shot(self, loaded_image_path):
# converting saved image to a base64 string:
image_str = self.image_convert_base64
return True
#converting image to a base64, if you want to send it, for example, via POST:
def image_convert_base64(self):
with open(self.image_path, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
if not encoded_string:
encoded_string = ''
return encoded_string
if __name__ == '__main__':
class CameraApp(App):
def build(self):
main_window = BoxLayoutW()
return main_window
CameraApp().run()
相机.kv:
<BoxLayoutW>:
Button:
text: 'shot'
on_release: root.take_shot()
原文由 megastruktur 发布,翻译遵循 CC BY-SA 3.0 许可协议
1 回答601 阅读✓ 已解决
1 回答1.5k 阅读
2 回答1k 阅读
1 回答1.3k 阅读
1 回答1.1k 阅读
1 回答971 阅读
812 阅读
Kivy 对调用相机有一些原生支持。从核心提供程序 的新编程指南中查看此页面, 或 从 uix 小部件的新编程指南 中查看此页面。理论上,核心应该能够在平台之间进行调整,然后小部件应该能够使用相机。