Tôi đang cố gắng đặt camera ở chế độ xem bề mặt theo hướng dọc trên điện thoại Android. Tôi đã sử dụng http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html để đặt máy ảnh ở chế độ xem bề mặt. Tuy nhiên máy ảnh được quay 90 độ, vì vậy tôi đã thử làm setDisplayOrientation (90) để sửa chữa nó, nhưng điều này squashes hình ảnh (nó có lẽ không phải là thay đổi kích thước bề mặt đúng cách ??). Làm thế nào tôi có thể làm cho nó để máy ảnh không được squished?Máy ảnh đang duỗi ở chế độ dọc
Trả lời
Bạn cần đổi kích thước hình ảnh theo vòng xoay. Xem here để biết ví dụ.
Nếu bạn đang sử dụng trình diễn API Android, bạn cần sửa đổi chức năng OnLayout()
.
Về cơ bản bản trình diễn API Android, đặt kích thước xem trước theo tỷ lệ khung hình sao cho hình ảnh xem trước bị thu nhỏ và hiển thị ở giữa màn hình với kích thước nhỏ ở chế độ dọc.
Ngay cả khi chúng tôi thiết lập hướng màn hình sang chế độ Chân dung, chiều rộng và chiều cao xem trước không bị thay đổi. Đó là lý do tại sao hình ảnh xem trước bị đổ.
sử dụng chức năng này cho hình ảnh thay đổi kích thước nó sẽ hữu ích cho bạn
public Bitmap resize(Bitmap img,int Width,int Height){
int width = img.getWidth();
int height = img.getHeight();
int newWidth = (int) Width;
int newHeight = (int) Height;
// calculate the scale - in this case = 0.4f
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// createa matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// rotate the Bitmap
//matrix.postRotate(45);
// recreate the new Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);
return resizedBitmap;
}
Điều duy nhất mà làm việc đối với tôi là
Trong mã mCamera.setDisplayOrientation(90);
Cách bố trí có fill_parent
cho cả height
và width
.
Và tệp kê khai có android:screenOrientation="portrait"
- 1. Máy ảnh Android ở chế độ dọc trên SurfaceView
- 2. Android: Hướng xem trước máy ảnh ở chế độ dọc
- 3. MediaRecorder quay video ở chế độ dọc
- 4. Buộc máy ảnh luôn mở ở chế độ dọc trong android
- 5. Chế độ xem chia nhỏ ở chế độ dọc!
- 6. AVVideoCompositionCoreAnimationTool và CALayer ở chế độ dọc?
- 7. "sửa chữa" hình nền động ở chế độ dọc
- 8. Làm thế nào để tạo UISplitViewController ở chế độ dọc?
- 9. Làm cách nào để biết ảnh ở chế độ ngang hoặc dọc?
- 10. splash (hình ảnh khởi chạy) ở chế độ ngang?
- 11. giữ ứng dụng đang chạy ở chế độ nền
- 12. Cách khôi phục chế độ xem trước máy ảnh từ chế độ ngủ?
- 13. Chạy ứng dụng IPhone khi đang ở chế độ ngủ
- 14. Ứng dụng đang chạy ở chế độ nền
- 15. Kiểm tra nếu iPad đang ở chế độ im lặng
- 16. Tại sao kích thước nền CSS: bìa không hoạt động ở chế độ dọc trên iOS?
- 17. UIImagePickerController ở chế độ máy ảnh bị 'kẹt' với màn trập đóng
- 18. Bàn phím mở ở chế độ toàn màn hình ở chế độ ngang
- 19. ActionBar với biểu tượng và văn bản ở chế độ dọc
- 20. Powershell ở chế độ NonInteractive
- 21. Chạy máy chủ Webrick ở chế độ nền?
- 22. Thay đổi phía máy chủ ở chế độ góc html5
- 23. camera Android được kéo dài ở chế độ ngang
- 24. Đặt hình nền/chế độ xem thành chế độ xem trực tiếp của máy ảnh?
- 25. Chế độ xem hình ảnh Android * FIT_TOP *
- 26. Nền tùy chỉnh cho UINavigationBar ở chế độ ngang
- 27. Có thể lập trình khóa ở chế độ dọc cho một số hoạt động nhất định
- 28. vim: undo newline ở chế độ chèn?
- 29. AutoCompleteTextView gợi ý ở chế độ ngang
- 30. Làm thế nào để phát hiện nếu Vim đang chạy ở chế độ hạn chế?
Chiều cao và chiều rộng là gì trong ví dụ đó? Tôi muốn xem trước khoảng một nửa màn hình, nhưng tôi không muốn hardcode giá trị để nó có thể hoạt động trên các kích thước màn hình khác nhau – user1154920
Đây là phương thức gọi lại SurfaceHolder do đó các tham số chiều cao và chiều rộng của phương thức sẽ được thiết lập bởi phần cứng. Nếu bạn muốn xem trước của bạn là một nửa của màn hình, sau đó chỉ cần đặt chúng trong các câu lệnh 'if' như: parameters.setPreviewSize (width/2, height/2); –