在 AVFoundation 中捕获缩放预览视图

2023-11-23

我正在使用 AVFoundation 相机中的缩放功能,我通过缩放具有 AVCaptureVideoPreviewLayer 的视图来实现缩放。 现在我想捕捉缩放图像。

这是我添加 AVFoundation Video PreviewLayer 进行查看的代码:

 // create a uiview subclass for showing the camera feed
 UIView *previewView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 430)];
 [[self view] addSubview:previewView];

 CGRect layerRect = CGRectMake(0, 0, 320, 430);
 [[self avCaptureVideoPreviewLayer] setBounds:layerRect];

 [[self  previewLayer] setPosition:CGPointMake(CGRectGetMidX(layerRect), CGRectGetMidY(layerRect))];

 // add the video previewview layer to the preview view
 [[previewView layer] addSublayer:[self avCaptureVideoPreviewLayer]];

缩放预览视图的代码

  // zoom the preview view using core graphics
 [previewView setTransform:CGAffineTransformMakeScale(2.0, 2.0 )];

现在我想从 PreviewView 捕获这个缩放图像

提前致谢。


最后,我设法在我的应用程序中添加捕获缩放照片。它有点难看,但它有效。我使用来自网络的 UIImage+resize 代码,然后将图像缩放到缩放比例,并计算缩放区域的偏移位置[在相机视图中可见],然后裁剪它。

现在,当缩放比例达到最大(即 6 倍)时,我的应用程序有时会崩溃。由于缩放图像太大,我收到内存问题,我会将此作为另一个问题。

希望这段代码对某人有用。

 if (cameraZoom > 1.0) 
 {
        // save the images original size
        CGSize orgSize = [image size];  

        // resize the image to the zoom scale  
        image = [image resizedImage:CGSizeMake(image.size.width * cameraZoom, image.size.height *cameraZoom) interpolationQuality:kCGInterpolationNone];           

        // now calculate the offset x and offset y
        CGFloat offsetX = ( image.size.width / 2 ) - (orgSize.width /2) ;
        CGFloat offsetY =  ( image.size.height / 2 ) - (orgSize.height /2);

         // crop the image from the offset position to the original width and height
         image = [image croppedImage:CGRectMake(offsetX, offsetY, orgSize.width, orgSize.height)];
    }


    UIButton *imgBtn = (UIButton *)[self.view viewWithTag:500];
    [imgBtn setImage:image forState:UIControlStateNormal];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 AVFoundation 中捕获缩放预览视图 的相关文章

  • 如何在 Swift 3 中解析 JSON 数组 [重复]

    这个问题在这里已经有答案了 我从 Socket 获取了一些我想访问的数据 但收到错误消息 指出每次都无法将 NSArray 转换为 NSDictionary struct SocketEventHandler let event Strin
  • Swift 3:如何去除UITableView屏幕截图的灰色区域

    我在从桌面视图的屏幕截图中删除灰色区域时遇到了问题 这是我尝试截图时的输出UITableView 实际上我隐藏了一些tableViewCell这是不需要的 可能这就是区域显示灰色的原因 任何帮助表示赞赏 非常感谢 Answer 我通过使用
  • 暂停视频录制[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试创建一个应用程序 用户可以在其中从相机录制视频 该应用程序的功能之一必须是文件录制中的暂停 例如 用户通过按 开始 按钮开始
  • MPMusicPlayerController 和 setNowPlayingItem

    我在用着MPMusicPlayerController 特别是与setNowPlayingItem协议 它是为了cydia 但我在制作时遇到了一些问题和理论的警告 似乎某些协议和方法不起作用 我收到如下警告 Tweak xm 177 war
  • iOS 11 安全区域布局指南向后兼容性

    启用安全区域布局指南是否与 iOS 11 以下版本兼容 我设法使用新的安全区域布局指南并保持与 iOS 9 和 iOS 10 的向后兼容性 编辑 正如 NickEntin 的评论所指出的 此实现将假定存在状态栏 但在 iPhone X 的横
  • iOS中的performSelector有什么用

    的作用是什么执行选择器 比较 self btnClicked and self performSelector selector btnClicked void btnClicked NSLog Method Called 两者都对我来说工
  • Transit MKDirectionsRequest 产生 null 错误 Error Domain=MKErrorDomain Code=5 "(null)"

    我正在尝试使用 MapKit Directions Request 来获取两个坐标之间的交通方向 当我切换到其他 非 Transit 类型时 下面的代码可以工作 但是当我切换到 Transit 时 它会抛出一个错误 该错误在 Apple 文
  • UIView 子类不会自动调整大小

    我一直在寻找有关调整大小的背景信息 但找不到太多 我知道我需要设置autoresizesSubviews在超级视图和autoresizingMask在子视图上 我已经这样做了 并且我的 UIImageViews 正确调整了大小 但我的自定义
  • Objective Flickr 照片上传错误

    我正在使用 ObjectiveFlickr 库将照片从我的 iPhone 应用程序上传到 Flickr 我可以授权该应用程序并执行一般请求 但在尝试上传照片时遇到错误 要上传的照片是使用 AVFoundation 捕获的图像 这是相关代码
  • iOS UIButton 带有圆角和背景 bug

    我发现圆形 UIButton 存在一个奇怪的问题 这是我创建此按钮的代码块 let roundedButton UIButton type System roundedButton frame CGRectMake 100 100 100
  • 无法使用 Xamarin 和 WCF 访问 Web 服务

    我想使用 Xamarin 和 WCF 来使用公共 Web 服务 对于这个演示 我将使用Xamarin iOS 这是我试图使用的 公共 网络服务 http www webservicex net globalweather asmx WSDL
  • 为什么我的 tableView 函数运行了 3 次?

    我有一个 UITableView 并且有执行它所需的方法之一 func tableView tableView UITableView numberOfRowsInSection section Int gt Int println sec
  • FireMonkey iOS RAD Studio XE2 - 在从 URL 加载的表单上显示图像

    是否可以将 TImage 放置在 iOS 的 FMX 表单上 并将图像 jpg 从 URL 加载到此 TImage 中以在 iOS 应用程序中显示 我尝试过但没有成功 任何正确方向的提示或指出都会受到赞赏 将 TButton TImageC
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • 重置转换后的 UIView 的原点会变得疯狂

    我使用 UIView transform 旋转 缩放 UIVIew 效果很好 然而 一旦我更改视图的框架原点 即使我没有执行任何进一步的 CGAffineTransforms 视图的内容也会开始 奇怪 地缩放 为什么会出现这种情况 我该如何
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • 我应该在哪个方法中设置 UITextField 的委托?

    在 viewDidLoad 或 init 方法中设置 UITextField 的委托是一个好习惯吗 我尝试在 init 方法中将委托设置为 self 但它没有调用相应的委托方法 当我将代码移动到 viewDidLoad 中时 它注册为将 s
  • 显示键盘时如何在 TextView 下方添加更多填充

    当我在 ScrollView 中有 TextField 并点击它时 键盘会按预期显示 但似乎 TextField 已向上移动到足以显示输入区域 但我希望移动到足够的位置 以便整体可见 否则它看起来像是被剪裁了的 我找不到改变这种行为的方法
  • ActionScript、NetStream.Play.Failed iOS AIR 移动设备

    我正在尝试以类似于 Tiberiu Ionu Stan http stackoverflow com questions 2036107 aac mp4 not working in actionscript 3s netstream 的方

随机推荐

  • 为什么局部变量的地址每次都会不同?

    我询问了 Google 并在 StackOverflow 上做了一些研究 我的问题是 当我进入main 在C 程序中调用函数并声明第一个变量 为什么该变量的地址在不同的执行过程中会有所不同 请参阅下面我的示例程序 include
  • Android - 显示动画状态栏图标

    我正在尝试将通知状态栏图标设置为动画 android R drawable stat sys upload 它工作正常 但图标没有动画 private void showStatusNotification NotificationMana
  • 使用 IF/ELSE IF 语句的奇怪错误

    我试图创建一个依赖于场景参数值的临时表并使用以下 IF 语句 但出现以下错误 IF indexName A begin select top 400 into temp from pretemp order by EMRev desc en
  • Android.mk 中的每个文件 CPPFLAGS

    我正在处理一个 Android mk 文件 其中对于单个模块 其中一个文件需要不同的 CPPFLAGS 也就是说 它需要启用 frtti 而其他则需要 Android 默认的 fno rtti 显而易见的解决方案是目标特定变量 但奇怪的是
  • Microsoft Chart堆积柱形图有间隙

    我正在使用 Net 4 0 中的图表库来创建包含多个系列的堆叠柱形图 我的目标是一个直方图 显示多个系列 教师 每天的累积操作数 报告完成情况 经常会丢失数据 特定教师当天没有活动 当系列中缺少数据时 我会在条形图中出现间隙 My code
  • jQuery ajax: 即使响应正常 200 也会运行错误

    我有一个通过 AJAX 使用 remote gt true 提交表单的表单 查看服务器日志和 FireBug 我得到响应 200 OK 它以以下形式返回 JSON email email protected 然后我有这两个处理程序 new
  • TypeError:不是函数打字稿类

    我在打字稿类中收到以下错误 并且无法理解原因 我所做的就是尝试调用传递令牌的辅助函数 Error 发布错误 TypeError this storeToken 不是函数 Class Authentication Service Contai
  • 按升序排序,但最后保留零

    假设我有一个矩阵A 在下面的表格中 A 35 1 6 3 32 0 0 9 0 0 0 0 我想按升序排序 但最后保留零 我知道我可以用所有零替换inf 排序 然后替换infs 再次为零 如中所提议的这个问题 我认为有一个更简单的方法 至少
  • StyleCop/FxCop 10 - 如何仅在命名空间级别正确抑制消息?

    FxCop 10 抱怨以下内容 using XYZ Blah CA1709 XYZ using Xyz Blah No complaint using XylophoneSuperDuperLongFullName Blah I don t
  • ABAP CDS 视图中的可选参数?

    我正在尝试创建一个 CDS 视图以供使用可选参数的使用 但目前不支持可选参数 是否有一种解决方法可以根据输入参数以某种方式选择要执行 使用哪些 where 子句 你检查了吗消耗 defaultValue注解 请看一下参考文件
  • 解析日期时间,时区格式为 PST/CEST/UTC/etc

    我正在尝试解析类似于以下内容的国际日期时间字符串 24 okt 08 21 09 06 CEST 到目前为止我已经得到了类似的东西 CultureInfo culture CultureInfo CreateSpecificCulture
  • jQuery DataTables - 通过精确匹配过滤列

    尝试仅显示与搜索栏中输入的搜索词完全匹配的内容 例如 我有一个按 ID 进行过滤的搜索栏 我只想显示与输入的确切 匹配的记录 So if 123已输入 我不想要12345 91239等要显示的内容 仅有的123 看到一些关于bRegex在常
  • 如何将 AES 初始化向量传递给混合密码系统的客户端

    我需要实现客户端 服务器通信的安全性 我已经实施了以下混合密码系统 为了在混合密码系统中加密发送给 Alice 的消息 Bob 执行以下操作 获取Alice的公钥 为数据封装方案生成新的对称密钥 使用刚刚生成的对称密钥在数据封装方案下加密消
  • Ajax Control Toolkit 加载了太多脚本资源

    我创建了一个新项目 我从 NuGet 安装了 Ajax Control Toolkit 然后我使用以下代码创建了一个新页面 aspx
  • 如何从多类分类的混淆矩阵中提取假阳性、假阴性

    我正在使用以下 Keras 代码对 mnist 数据进行分类 从confusion matrix的命令sklearn metrics我得到了混淆矩阵并且来自TruePositive sum numpy diag cm1 命令我能够得到真阳性
  • 使用堆栈的非递归深度优先搜索 (DFS)

    好吧 这是我在 Stack Overflow 上的第一篇文章 我已经阅读了一段时间并且非常欣赏这个网站 我希望这是可以接受的问题 所以我一直在阅读 算法简介 Cormen MIT Press 并且我已经了解了图形算法 我一直在非常详细地研究
  • 将逗号分隔值转换为双引号逗号分隔字符串

    我有一个逗号分隔的值 例如 alpha beta charlie 我怎样才能将它转换为 alpha beta charlie 在 php 中使用单个函数而不使用str replace Richard Parnaby King 函数的替代方案
  • 如何检查字符串是否以 Java 字符串列表中的任何条目结尾

    我有一个文件名和扩展名列表 我想检查文件名是否以列表中的任何扩展名结尾 String fileName abc txt String extensions txt doc pdf 我可以手动检查扩展名列表 并检查文件是否以列表中的任何扩展名
  • 使用 Sublime Text 2 进行特定于语法的突出显示

    我想知道是否有一种方法可以为同一文件中的不同语言标签提供两种不同的标签颜色 美国的 颜色 例如 假设我在同一个 cfm 文件中具有 ColdFusion 代码和 HTML 代码 我可以将 ColdFusion 标签设为红色 将 HTML 标
  • 在 AVFoundation 中捕获缩放预览视图

    我正在使用 AVFoundation 相机中的缩放功能 我通过缩放具有 AVCaptureVideoPreviewLayer 的视图来实现缩放 现在我想捕捉缩放图像 这是我添加 AVFoundation Video PreviewLayer