裁剪/剪辑相机预览以仅显示图像的上半部分
Posted
技术标签:
【中文标题】裁剪/剪辑相机预览以仅显示图像的上半部分【英文标题】:Cropping/Clipping camera preview to just show top half of image 【发布时间】:2011-06-07 22:18:02 【问题描述】:我正在开发一个在 SurfaceView 上显示相机预览的应用,但我只想显示预览的上半部分。
有没有办法裁剪/剪裁视图,或者我必须求助于用图像、其他视图或绘图之类的东西来遮挡下半部分?
问候 西蒙
【问题讨论】:
【参考方案1】:我目前正在使用这种方法进行裁剪(基本上是使用绝对布局的裁剪子功能来裁剪surfaceview子)
<AbsoluteLayout android:clipChildren="true" android:layout_alignParentRight="true" android:layout_ android:id="@+id/absoluteLayout1" android:layout_>
<SurfaceView android:id="@+id/swSurfaceView" android:layout_ android:layout_ android:visibility="visible"></SurfaceView>
</AbsoluteLayout>
【讨论】:
这仅适用于某些设备...在其他设备上不会产生预期的效果。【参考方案2】:用另一个视图覆盖SurfaceView
是最简单的方法......但是,如果你问我,它会很丑。
为什么不手动设置SurfaceView
高度?让它占据 50% 的屏幕空间,它会做你想做的事。您不提供代码,所以我们必须做一些猜测:假设您有一个LinearLayout
,然后在其中放置两个视图:您的表面视图和另一种视图。然后,您将它们的高度设置为 0dip,将它们的重量设置为 1...应该这样做。
【讨论】:
AFAICT 那种方法只是“挤压”预览 :( - 我希望只显示预览的上半部分,最好以“漂亮”的方式 :) 我刚刚尝试了您的建议,但它确实如我所料 - 它垂直挤压相机预览,因此您最终会看到整个相机图像的扭曲视图,而不是上半部分图片:( 您可以将您的代码粘贴到您的自定义SurfaceView
中吗?
不确定你的意思,但我已经发布了我最终使用的 xml 代码:)以上是关于裁剪/剪辑相机预览以仅显示图像的上半部分的主要内容,如果未能解决你的问题,请参考以下文章