Pratinjau Android Camera2 diperpanjang

Sep 13 2020

Saya mencoba mempelajari Camera2 API dan saya telah membangun aplikasi kamera sederhana hanya untuk mengambil gambar tetapi masalah yang saya hadapi adalah pratinjau yang diperluas untuk beberapa resolusi. Saya memeriksa sejumlah posting yang berbeda dan semuanya menyarankan bahwa rasio aspek saya mungkin salah tetapi saya telah menggunakan AutoFitTextureView yang direkomendasikan Google dengan rasio aspek yang benar masih pratinjau saya melebar. Saya mengunduh beberapa aplikasi kamera sumber terbuka dari playstore dan banyak dari mereka juga memiliki masalah yang sama dengan kamera depan saya (KECUALI KAMERA TERBUKA) tetapi bagian lucunya adalah saya menggunakan aplikasi yang sama di perangkat lain dan pratinjau benar-benar sempurna. Jadi akhirnya saya memutuskan untuk menguji aplikasi saya dengan resolusi yang berbeda dan mengamati hasilnya tetapi saya tidak dapat menemukan pola apa pun, adakah yang bisa membantu saya untuk memahaminya ???

my device display size is 720x1280
Front camera results: 
SurfaceTexture        AutoFitTextureView         Result
buffer size           size       
2576x1932             720x960                    Normal
2560x1440             720x1280                   Normal
2048x1536             720x960                    Normal
2048x1152             720x1280                   Normal
1920x1920             720x720                    Normal
1920x1080             720x1280                   Normal
1440x1080             720x960                    Horizontally Stretched
1280x720              720x1280                   Horizontally Stretched
1072x1072             720x720                    Normal
960x720               720x960                    Normal
720x480               720x1080                   Horizontally Stretched
640x480               720x960                    Horizontally Stretched
352x288               720x880                    Normal
320x240               720x960                    Normal
256x144               720x1280                   Horizontally Stretched
176x144               720x880                    Normal

Jawaban

1 WebDiva Oct 04 2020 at 22:25

Camera2 sangat sulit dipelajari sebagai pemula. Pertimbangkan untuk menggunakan perpustakaan kamera yang melakukan sebagian besar pekerjaan. Ini salah satu yang terbaik yang saya temukan:https://camerakit.io/docs. Ini sangat mudah dan akan mengatasi semua masalah yang Anda hadapi saat ini.
(Perhatikan bahwa saya tidak memiliki proyek ini dan saya tidak mempromosikannya dengan cara apapun. Saya telah mencoba camera2 API dan ini sangat sulit, itulah sebabnya saya menyarankan solusi yang lebih mudah.

EddyTalvala Oct 05 2020 at 07:13

Sebenarnya mungkin ini adalah bug perangkat - implementasi kamera salah penskalaan dari ukuran sensor penuh. Ini lebih sering terjadi pada ukuran tidak biasa yang tidak digunakan sebagian besar aplikasi.

Dalam kasus Anda, mungkin 1440x1080 diperlakukan seperti 1920x1080 oleh beberapa bagian dari pipa kamera, menghasilkan peregangan. Terkadang ini dapat 'diperbaiki' dengan menambahkan output kedua (JPEG misalnya) pada resolusi yang berbeda (atau bahkan yang sama, terkadang).

Tentu saja, Anda masih mungkin memiliki bug logika dalam kode Anda (atau di AutoFitTextureView). Tetapi itu sulit untuk memberikan saran yang berguna - ini masalah memeriksa semua tata letak dan menskalakan matematika selangkah demi selangkah.

Anda juga dapat mencoba pustaka dukungan kamera resmi Google, CameraX . Ini dalam versi beta, dan berfungsi dengan baik untuk kasus penggunaan dasar seperti pratinjau, pengambilan gambar diam, dan analisis gambar.