Kivy Camera在Android平台显示旋转90度,如何修复?
解决Kivy Camera在Android平台画面旋转90度的问题
方法1:在Python代码中添加Canvas旋转指令
你之前用的是KV语言的旋转写法,但因为是用Python声明式创建的Camera,得手动把旋转指令添加到Canvas里:
from kivy.graphics import PushMatrix, PopMatrix, Rotate # 创建Camera实例 self.camera = Camera(play=True) # 给Camera的canvas.before添加旋转逻辑 with self.camera.canvas.before: PushMatrix() self.rotate = Rotate(angle=-90, origin=self.camera.center) # 给canvas.after添加矩阵恢复逻辑 with self.camera.canvas.after: PopMatrix() # 监听Camera的尺寸、位置变化,实时更新旋转原点,避免画面偏移 def update_rotate_origin(instance, _): self.rotate.origin = instance.center self.camera.bind(size=update_rotate_origin, pos=update_rotate_origin)
方法2:直接调整Camera纹理角度
部分Android设备的Camera底层输出纹理本身就是旋转状态,直接修改纹理角度更高效:
self.camera = Camera(play=True, resolution=(480, 640)) # 交换原分辨率的宽高适配竖屏 self.camera.texture.angle = 90 # 直接旋转纹理
方法3:指定相机索引
部分设备的前置/后置相机默认方向不同,尝试切换相机索引:
# 0通常对应后置相机,1对应前置相机,不同设备可能有差异 self.camera = Camera(play=True, index=0)
内容的提问来源于stack exchange,提问作者Yurben
相关产品推荐
相关产品推荐

