- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个这样的嵌套视频: Live camera feed
当用户拍照时,图像沿y轴偏移 Captured Still image
我确实想要捕获整个图像并让用户上下滚动。他们目前可以这样做,但我希望图像的起始滚动居中以匹配相机提要预览。因此,如果他们拍照,图像就会与视频源显示的帧相匹配。
问题是,因为相机的纵横比设置为 AVLayerVideoGravityResizeAspectFill,它会进行一些“裁剪”以使图像适合实时预览。由于高度远大于宽度,因此图像中捕获的顶部和底部部分没有显示在实时源中(自然)。
但是,我不知道顶部被裁剪了多少,以便我可以偏移预览图像以匹配它。
所以我的问题是:您知道如何计算宽高比设置为 AVLayerVideoGravityResizeAspectFill 的相机顶部的裁剪量吗? (欢迎使用 Objective-C 和 Swift 回答!)
最佳答案
我想出的解决方案是这样的:
func getVerticalOffsetAdjustment()->CGFloat
{
var cropRect:CGRect = _videoPreviewLayer.metadataOutputRectOfInterestForRect(_videoPreviewLayer.bounds) //returns the cropped aspect ratio box so you can use its offset position
//Because the camera is rotated by 90 degrees, you need to use .x for the actual y value when in portrait mode
return cropRect.origin.x/cropRect.width * frame.height
}
我承认这很令人困惑,但是因为在纵向模式下相机会旋转 90 度,所以您需要使用 width 和 x 值。 cropRect 将返回类似 (0.125,0,0,75,1.0) 的值(您的确切值会有所不同)。
这告诉我,我移动的 y 值(实时视频向我显示的值)向下移动了其总高度的 12.5%,而视频源的高度仅为总高度的 75%。
所以我将 12.5% 除以 75% 以获得标准化的(对我的 UIWindow)值,然后将该值应用到 ScrollView 偏移量。
哇!!!
关于ios - 补偿 AVLayerVideoGravityResizeAspectFill 高度差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536740/
我看到以下关于 MPEG 1 运动估计/补偿的解释,只是想知道它是否正确: 为什么我们不直接编码当前 block 和引用 block 之间的原始差异?因为残差的数字通常会小很多。例如,假设一个物体在图
计算机屏幕上像素的亮度通常与像素的数字 RGB 三元组值不线性相关。早期 CRT 的非线性响应需要补偿非线性编码,我们今天仍在继续使用此类编码。 通常我们在计算机屏幕上生成图像并在那里使用它们,所以一
我不知道它叫什么。状态栏?随着接待和电池生命周期的增加。但是有没有一种简单的方法可以判断它是否显示在应用程序中? 我正在编写一些通用代码,如果没有栏,我希望将某些内容放置在屏幕顶部,如果有,则在栏下方
观察下面的简单示例: div { border-bottom: 1px solid black; border-radius: 20%; padding: 10px; } Test 在 S
我有一个这样的嵌套视频: Live camera feed 当用户拍照时,图像沿y轴偏移 Captured Still image 我确实想要捕获整个图像并让用户上下滚动。他们目前可以这样做,但我希望
我从客户端收到了一个字体 (Calibre) 作为 OTF 文件,用于网络应用程序,但文件的“行高”(或者你怎么调用它?)有些奇怪。实际文本溢出顶部的 dom 元素并在下面留下一堆空间,导致各种丑陋。
我编写了一个数学计算器,它从用户那里接收一个字符串并对其进行解析。它使用 double 来保存计算时涉及的所有值。解决后,我将其打印出来,并使用 std::setprecision() 确保其输出正确
不同的 Android 设备具有不同的屏幕尺寸和屏幕密度。编写视频游戏时,补偿差异的好方法是什么? 最佳答案 我们先从 Android 的文档开始 Supporting Multiple Screen
我正在制作个人资料图片裁剪编辑器,它允许在区域内拖动、缩放和旋转图像。 图片的拖动是通过捕捉区域的mousedown和mousemove事件,计算区域内游标开始和停止的x/y坐标,得到游标移动的距离。
我正在尝试按地理区域对 AnyLogic GISRegions 集合进行排序。所述面积是使用GISRegion.area(units)计算的,这很简单。然而,我使用的区域是城市规模的,并且该方法返回一
首先,我希望这不是重复的。我读过很多类似的问题,但找不到与此特定问题相关的问题。 我有一个 javascript 日期选择器,它在内部使用 javascript 日期,这会产生意想不到的副作用。当我选
您可以在此处查看实时版本:http://steffiwilson.com/test . IE9 没有将内容 block 居中。 (我很确定旧版本的 IE 也不能正常工作,但我不能肯定地说。)我已经确保
我是一名优秀的程序员,十分优秀!