我正在尝试使用cwac-v9-camera中的CameraFragment创建自定义相机片段拍摄和预览方形图像。
我希望预览和拍摄的照片完全相同,所以: 1.我使用FullBleedPreview = false 2.我希望预览图片占据全宽,需要将我的预览图片放在预览区域的最顶部,这样我就可以用一些视图覆盖剩下的图像,使其成为正方形。
问题是CameraView在相机预览区域的中央绘制图像,并在顶部和底部添加白线。
有没有办法控制小说绘制预览图片的位置?
答案 0 :(得分:2)
我有同样的问题,花了一天时间在这个CWAC库上(顺便说一句,这绝对是好的)。我想分享我的研究,希望你(和我)很快就会得到一个有效的解决方案。
测试平台:Sony Xperia Z,Android 4.2.2
测试分辨率: 1080x1920 。
可用预览: 1280x720 , 960x720 ,720x480, 704x576 ,640x480,480x320,320x240,176x144。
目标预览尺寸: 1080x1080 ,当然是正方形:D
在我的自定义CameraHost的CameraHost.getPreviewSize()内完成测试。
如果我在这里为超类功能提供方形视图/大小,我得到 704x576 。它是11:9(或1.22222~),最接近1:1或1.0。但是,当放大到1080宽度并且也会变形时,它看起来很模糊。
1280x720是16:9(1.777~)。设备相机通过裁剪顶部和底部来获得此功能(请注意,相机正在以横向模式进行通话)。
960x720是4:3(1.333~)。这是设备相机的全分辨率。这是我的目标分辨率,我只希望将960x720内的720x720朝向上边缘(纵向)或左边缘(风景)。
在自定义CameraHost(扩展SimpleCameraHost)中,限制预览大小:
@Override
public Size getPreviewSize(int orientation, int w, int h, Parameters p) {
Size size = super.getPreviewSize(orientation, 720, 960, p);
ViewGroup.LayoutParams params = cameraView.getLayoutParams();
params.width = 1080;
params.height = 960 * 1080/720;
cameraView.setLayoutParams(params);
return size;
}
layout.xml:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.commonsware.cwac.camera.CameraView
android:id="@+id/cameraView"
android:layout_width="match_parent"
android:layout_gravity="top|center_horizontal"
android:layout_height="match_parent"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.android.widget.SquareView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:background="#99e0e0e0">
(your elements to cover up the extra area)
</LinearLayout>
</LinearLayout>
</FrameLayout>
以下是结果,并与系统相机比较,使用4:3。
注意:
答案 1 :(得分:1)
有没有办法控制小说绘制预览图片的位置?
它绘制CameraView
所在的图像。精确位于该空间内的位置取决于CameraView
的宽高比和预览图像的宽高比,并且无法提前确定。