Полноэкранная камера на телефоне kivy

Хочу сделать тестовое приложение на андройд с помощью python (kivy) с использованием камеры.

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
import time

Window.maximize()

Builder.load_string(
    '''
<CameraClick>:
    orientation: 'vertical'
    Button:
        text: 'Capture'
        size_hint_y: None
        height: '48dp'
        on_press: root.capture()
    Camera:
        id: camera
        resolution: (640, 480)
        allow_stretch: True
        keep_ratio: True
        play: True
'''
)


class CameraClick(BoxLayout):
    def capture(self):
        '''
        Function to capture the images and give them the names
        according to their captured time and date.
        '''
        camera = self.ids['camera']
        timestr = time.strftime("%Y%m%d_%H%M%S")
        camera.export_to_png("IMG_{}.png".format(timestr))
        print("Captured")


class TestCamera(App):

    def build(self):
        return CameraClick()


TestCamera().run()

код рабочий. Но изображение с камеры выводится не на весь экран. введите сюда описание изображения

Как можно это исправить. Хочу добиться результата, как например в камере у приложения телеграмм и других приложениях. Чтобы выводилось изображение с камеры в полный экран, обрезая часть изображения(что-то вроде маштабирования) не знаю как это еще описать. Что-то вроде object-fit: cover; из css. Знаю что можно сделать keep_ratio: False. И изображение растнется на весь экран, но будет искажено.


Ответы (2 шт):

Автор решения: Mikhail

Попробуйте после команды запуска вставить следующее

... TestCamera().run()

Window.fullscreen = True

→ Ссылка
Автор решения: George

Чтобы отобразить предварительный просмотр камеры в полноэкранном режиме с сохранением соотношения сторон, вы можете использовать виджет Scatter в Kivy, который позволяет применять произвольные преобразования к его дочерним элементам. Вы можете обернуть виджет камеры в виджет Scatter и установить для его свойств do_scale и do_translation значение False, чтобы отключить масштабирование и перевод, но разрешить вращение.

Вот обновленная версия вашего кода, реализующего виджет Scatter: `

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
from kivy.uix.scatter import Scatter
import time

Window.maximize()

Builder.load_string(
    '''
<CameraClick>:
    orientation: 'vertical'
    Button:
        text: 'Capture'
        size_hint_y: None
        height: '48dp'
        on_press: root.capture()
    Scatter:
        do_scale: False
        do_translation: False
        Camera:
            id: camera
            resolution: (640, 480)
            allow_stretch: True
            keep_ratio: True
            play: True
'''
)


class CameraClick(BoxLayout):
    def capture(self):
        camera = self.ids['camera']
        timestr = time.strftime("%Y%m%d_%H%M%S")
        camera.export_to_png("IMG_{}.png".format(timestr))
        print("Captured")


class TestCamera(App):

    def build(self):
        return CameraClick()


TestCamera().run()

`

→ Ссылка