裁剪/剪辑相机预览以仅显示图像的上半部分

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 代码:)

以上是关于裁剪/剪辑相机预览以仅显示图像的上半部分的主要内容,如果未能解决你的问题,请参考以下文章

即时裁剪图像

如何方形裁剪 Flutter 相机预览

是否可以裁剪相机预览?

CSS:裁剪图像的显示预览[关闭]

Swift 中的自定义相机和裁剪图像

如何从相机中裁剪图像