- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个应用程序,它使用 UIImagePickerController 以 iOS 允许的速度用相机拍摄多张照片。我的应用程序必须在所有版本的 iPhone 硬件(v1 到 4)上的 iOS 3.13 上运行。我正在使用带有cameraOverlayView的UIImagePickerController。
我的问题是,如何根据可用内存以编程方式确定一次可以处理多少张照片?请参阅下面的更多细节。如有任何帮助,我们将不胜感激!
当 imagePicker 委托(delegate)接收到 imagePicker:didFinishPickingMediaWithInfo: 时,委托(delegate)使用 UIImageWriteToSavedPhotosAlbum() 将全尺寸图像保存在 savingPhotosAlbum 中。一旦我解决了这个问题,应用程序将使用全尺寸图像执行更多操作。
作为测试,我会尽可能快地拍照。最终,正如预期的那样,由于保存到相册时内存中存在大量照片,该应用程序收到了内存警告。如果我忽略内存警告并继续拍照,最终该应用程序会被 iOS b/c 杀死。
我对允许应用程序一次处理的并发照片数量设置限制没有任何问题。每个 iPhone HW 版本都有不同的内存容量和不同的相机分辨率。对于 iOS 4,多任务处理也可能会影响可用内存。我宁愿以编程方式执行此操作,也不愿根据硬件版本硬编码限制。
显示此行为的测试应用程序位于 Source Code
最佳答案
对限制进行硬编码更容易。
没有简单的方法可以找出“可用内存”是多少,因为如果出现内存警告,或者手机决定终止各种后台应用程序(即 Safari),可能会突然释放更多内存。有 NSRealMemoryAvailable(),但它可能只返回已安装的 RAM(并且可能是 [NSProcessInfophysicalMemory] 使用的)。
您可以尝试将图像保存在队列中 - 一次保存一张图像可能会使用更少的内存。您还可以在收到内存警告时向队列中添加标记,并在有多个时禁用图像保存(理想情况下,如果收到“2 级”或“3 级”内存警告,您希望停止拍照,但同时这些被打印到控制台,我不知道有什么简单的方法来检查代码。大概你想在内存未警告时恢复,但这些也不存在)。
另请注意,您可以通过通知获取原始 JPEG 数据(在某些操作系统版本上);我忘记了名字是什么,但 userInfo 键是@“AVCaptureNotificationInfo_JPEGData”。如果您保存原始 JPEG 数据,您也许可以稍后对其进行处理。
我认为 UIImageWriteToSavedPhotosAlbum() 愚蠢地解压缩相机返回的 JPEG 并重新压缩它,但我可能是错的。相机图像只有 1-2 MB 左右,因此您应该能够拍摄足够多的图像而不会崩溃,但在我的测试中情况并非如此。
关于iphone - 使用相机拍摄多张照片时,如何检查是否有足够的内存来处理 UIImagePickerController 捕获的图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3461838/
我有一个 UIImagePickerController 和一个 cameraOverlayView,但是当用户拍照时,cameraOverlay View 会保留在“预览/使用照片/重拍照片 Vie
我试过将 Info.plist 'View controller-based status bar appearance' 设置为 NO,我试过调用 [[UIApplication sharedApp
我正在尝试快速使用 UIImagePickerController 但不起作用... 我的 View Controller : class ViewController: UIViewControll
我的 UIImagePickerController 有问题,allowEditing = YES。 我无法从底部裁剪图像,但在移动裁剪矩形时,顶部还有一个额外的空白空间。 也在方法中。 -(void
为什么当 UIImagePickerController 处于视频模式时,AVFoundation 显示的缩放级别与 UIImagePickerController 相同?如何使 AVFoundati
我正在开发一个应用程序,我必须使用图像选择器 Controller 从手机库导入图像。问题是我必须首先关闭选择器 Controller ,然后在选择器 Controller 关闭后呈现另一个 Cont
我的以下代码在 swift 4 上运行良好,但在升级到 swift 4.2 后出现此错误,我浪费了 3 个小时搜索问题所在但失败了。如果有人能指导我如何解决这个问题,请多多指教。 func image
所以我正在尝试为 iOS 7 更新一个应用程序,但我遇到了自定义叠加层的问题。叠加层是我用来构图的图像(实时和使用全分辨率版本在相机胶卷中构图最终结果)。问题是,现在在 iOS 7 下,覆盖层虽然在底
我正在使用 UIImagePickerController 捕获图像然后存储它。但是,当我尝试重新缩放它时,我从该图像中获得的方向值不正确。当我拿起手机拍照时,它给了我左边的方向。有没有人遇到过这个问
我注意到 UIImagePicker 为相机胶卷返回的 NSDictionary 似乎不再返回 UIImagePickerControllerOriginalImage 对象。相反,我得到了一个 UI
我有一个简单的标准图像选择器,它工作正常,但当我使用编辑器功能时,图像会移动到方形裁剪框上方。当我选择图像或调整图像大小然后接受它时,裁剪后的图像在裁剪框上方有大约 20 个像素的图像,底部有大约 4
我的应用程序允许用户从设备的相机胶卷中选择图像。我想验证所选图像的格式是 PNG 或 JPG 图像。 是否可以在 - (void)imagePickerController:(UIImagePicke
是否可以保存视频并将其添加到自定义 ALAsset,以 mp4 格式从 UIImagePicker 捕获?或者我必须将它保存在 .mov 中并通过 AVAssetExportSession 进行压缩?
似乎内置的 UIImagePickerController 无法接受除设备相机卷以外的来源。 我想在我自己的应用程序中获得选择和放大图片的功能。另外我想允许用户选择图片并将其保存到他们的相机胶卷中(以
我想在呈现 UIImagePickerController 拍照时隐藏显示快门打开的动画。我检查了this question对于包含已接受的内容的相同内容,但我无法在我的 Controller 中复制
我想 UIImagePickerController 会允许您使用相机或从 View 中的库中进行选择?看来我必须选择一个或另一个 cia 的 sourceType?有没有办法在选择库 View 中添
我试图在 UIActionSheet 中单击按钮后显示 UIImagePickerController。代码很简单。但是,对 [[UIImagePickerController alloc] init
我搜索了一些在我的应用程序中使用 UIImagePickerController 的方法,我发现唯一有效的方法如下: 在应用程序显示的第一个 View 上,输入: self.picker = [[UI
UIImagePickerController 很容易使用,但是当我以前没有发现它时,我突然发现它很令人恼火。发生的情况是,有时 imagePickerController:didFinishPick
我有以下代码: SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondVie
我是一名优秀的程序员,十分优秀!