Я использую TextureView для CameraPreview, из-за разницы между отношением отображения и коэффициентом предварительного просмотра я использую textureView.setTransform (matrix) в onSurfaceTextureAvailable() для масштабирования предварительного просмотра. Когда мне нужен скриншот textureView, я использую textureView.getBitmap(), но в некоторых моделях смартфонов getBitmap() игнорирует масштабирование предварительного просмотра. Почему так происходит?textureview getbitmap игнорирует setTransform
ответ
Я обнаружил эту же проблему, когда мне нужно было предварительно обработать предварительный просмотр камеры перед ее отображением.
Похоже, что первоначальный захват камеры - это то, что выходит в getBitmap(), а не преобразованное представление, которое заканчивается показом.
Я работал вокруг проблемы со следующим, который просто применяет ту же преобразование после Bitmap вытягивается:
TextureView textureView = (TextureView) findViewById(R.id.texture);
Matrix m = new Matrix();
// Do matrix creation here.
textureView.setTransform(m);
// When you need to get the Bitmap
Bitmap bitmap = textureView.getBitmap();
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), textureView.getTransform(null), true);
Я заметил, что Bitmap не обрезаны, как это может быть в оригинале Посмотреть. В моем случае TextureView обрезал верх и низ изображения, в то время как битмап был по-прежнему в полном размере. В принципе, похоже, что TextureView использует эквивалент «centerCrop» для отображения исходного источника по умолчанию. Я установил свой соответствующий ImageView для использования android:scaleType="centerCrop"
, и представления имеют тот же аспект.
Конечно, это означает, что я обрабатываю больше изображения, которое мне действительно нужно, но я не разработал, как вырезать именно то, что делает TextureView перед обработкой.
- 1. Иногда textureview getbitmap возвращает «черный» битмап
- 2. Android: Использование SetTransform для листать Прямую TextureView
- 3. Android TextureView: видео, отображающее серый кадр при вызове getBitmap
- 4. TextureView getBitmap() создает небольшое отражение окна в углу
- 5. SetTransform() для SurfaceView
- 6. Box2d SetTransform
- 7. Когда в камеру TextureView
- 8. CBitmap :: GetBitmap Failure
- 9. box2d, setTransform and collisions
- 10. setTransform stage method, Easeljs
- 11. Получите часть изображения из TextureView
- 12. Матричное видео на TextureView Android
- 13. Почему метод getBitmap не работает?
- 14. Box2D setTransform() angle ОЧЕНЬ неверен
- 15. Android Drawable getBitmap размер несоответствие
- 16. Невозможно использовать SetTransform в D3D9
- 17. Direct3D Sprite-> Использование SetTransform?
- 18. Android: видео в TextureView
- 19. Воспроизведение видео на TextureView
- 20. Android, Буферы в textureView
- 21. Как оживить TextureView?
- 22. Масштабирование и панорамирование TextureView
- 23. TextureView setBackgroundColor не работает
- 24. Textureview get Surface
- 25. TextureView с прозрачностью
- 26. Android oval textureview
- 27. Комбинация SurfaceView или TextureView
- 28. Обходной путь или альтернатива рисунку (таблица) .GetBitmap()?
- 29. Android getBitmap не может найти заданное изображение
- 30. Strange CBitmapRenderTarget :: GetBitmap API - Direct2D MFC