因此,在我的應用程序中,我顯示的是不佔用整個屏幕的相機預覽。我手動設置顯示器,但我得到了不正確的圖像寬高比。我將顯示寬度設置爲當前屏幕大小的一半。然後我想根據寬度設置高度並保持正確的圖像寬高比。如何設置相機預覽高度,同時保持正確的比例?設置縮小的相機預覽,使其具有相對於寬度的正確圖像寬高比
0
A
回答
0
我用這個
private Camera.Size getBestPreviewSize(int width, int height)
{
Camera.Size result=null;
Camera.Parameters p = camera.getParameters();
for (Camera.Size size : p.getSupportedPreviewSizes()) {
if (size.width<=width && size.height<=height) {
if (result==null) {
result=size;
} else {
int resultArea=result.width*result.height;
int newArea=size.width*size.height;
if (newArea>resultArea) {
result=size;
}
}
}
}
return result;
}
2
The AOSP Camera uses a PreviewFrameLayout
作爲預覽的SurfaceView
的包裝。他們根據他們從Camera
中選擇的預覽尺寸的縱橫比,在PreviewFrameLayout
上調用setAspectRatio()
,PreviewFrameLayout
相應地縮放SurfaceView
。
由於PreviewFrameLayout
是開源的,因此沒有什麼能夠阻止您將其克隆到您自己的項目中,就像我在this one中那樣。
所以,你的情況,你會設置PreviewFrameLayout
是所需的最大尺寸(「當前屏幕尺寸的一半」,這我希望,您使用的是LinearLayout
和android:layout_weight
完成),教它的長寬比,把SurfaceView
放在PreviewFrameLayout
,你應該很好走。
請注意,您應該能夠在SurfaceView
上設置android:layout_gravity
,使其居中在PreviewFrameLayout
之內。
相關問題
- 1. Android相機圖像高度和寬度返回不正確
- 2. 設置相機的寬度和高度phonegap相機
- 3. 如何設置所有圖像的iFrame寬度高度相同
- 4. 如何設置相對於原始圖像大小比例的UIimageview寬度
- 5. 調整div寬度相對於其高度來保持寬高比
- 6. 相機校準:高寬比與圖像寬高比不同。如何糾正?
- 7. 如何設置相對於其自身高度的響應比例圖像 - 不是其寬度
- 8. HTML:具有相同寬度的圖像
- 9. 設置一個具有位置DIV爲最小寬度相對
- 10. 設置div的寬度相對於瀏覽器窗口的寬度
- 11. 爲什麼旋轉的圖像具有相同的寬高比?
- 12. 將html圖形寬度設置爲與其包含的圖像寬度相同
- 13. 使元素的寬度相對於其高度?
- 14. 製作具有不同高寬比的響應圖像高度相同
- 15. 縮小圖像並保持寬高比
- 16. CSS - 相對於高度改變寬度
- 17. 使用相同寬高比調整大小的多個圖像
- 18. 確定Android設備的相機高度和寬度
- 19. 設置圖像的寬度和高度
- 20. Android相機預覽:1:1寬高比,怎麼樣?
- 21. 獲取沒有設置高度/寬度的圖像的高度/寬度
- 22. 減小圖像的寬度/高度以適合給定的寬高比。怎麼樣? - Python圖像縮略圖
- 23. 設置最小高度等於寬度
- 24. 設置圖像與CSS的高寬比
- 25. 使用縮略圖,我可以使相同的高度和寬度的縮略圖無論圖像的大小
- 26. 相對於高度的自動寬度+調整窗口大小
- 27. 調整圖像相對於視口寬度的大小
- 28. 設置android的相對佈局的高度和寬度
- 29. .NET圖像縮放,使長寬比,只有一個寬度或高度
- 30. 按鈕的寬度相對於其contentpresenters寬度
不可能解決的問題我做這由'FrameLayout'設置爲屏幕的50%的寬度,然後設置'FrameLayout'高度更簡單的方式和相機預覽會自動填充它 –
@WillJamieson:如果您認爲這比使用所有這些代碼更簡單,那麼歡迎您這樣做。請記住,高寬比是由選定的預覽幀尺寸驅動的 - 如果您的「SurfaceView」未採用相同的高寬比進行尺寸調整,圖像將被拉伸。 – CommonsWare
我檢查了你的代碼,這正是我要找的。但是,我無法在縱向模式下順利工作。你有什麼想法我可以如何工作? –