У меня есть предварительный просмотр, который является WpxHp, я хочу снимать HxW-картинки, поэтому я хочу, чтобы пользователь увидел окно предварительного просмотра, имеющее такое же соотношение сторон изображения, которое я возьму , а не один из предварительного просмотра. Как обрезать предварительный просмотр с помощью TextureView?Android - Как обрезать просмотр камеры с помощью TextureView
- редактировать
, что я думал, что это использовать масштаб Матрицу, чтобы исказить изображение таким образом, чтобы cmpensate для TextureView изменения размера, позвольте мне объяснить лучше:
У меня есть цель предварительного просмотра (изображение) размер, который (W, H). Поэтому мне нужно изменить размер TextureView на (W, H). Это означает искажение, которое просто представляет собой неравномерное линейное масштабирование, представимое матрицей S. Поэтому, если я масштабирую изображение с помощью inv (S), прежде чем изменять размер представления, я должен получить те же оригинальные размеры Preview (при этом одинаковое соотношение сторон) но с изменением размера TextureView, и это эквивалентно обрезке. Я пробовал и, похоже, работает, но я ищу альтернативный путь
Вы можете увидеть пример манипулирования предварительным просмотром камеры в Grafika - см. Деятельность «текстура из камеры». https://github.com/google/grafika – fadden
благодарит за подсказку! это очень интересно. Однако он не использует компонент TextureView и, похоже, ничего не убирает, вместо этого ищет совпадение в поддерживаемых размерах предварительного просмотра. – LJSilver
Используйте слайдеры для увеличения. Он эффективно обрезает исходное изображение и масштабирует его в соответствии с текущим размером кадра. TextureView и SurfaceView не очень актуальны; это просто выход GLES. – fadden