我正在使用ALAsset来检索这样的图像:
[[asset defaultRepresentation] fullResolutionImage]]

这返回CGImageRef,我想尽快保存到磁盘…

解决方案1:

UIImage *currentimage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
NSData *currentimageData = UIImagePNGRepresentation(currentimage);
[currentimageData writetoFile:filePath atomically:YES];

解决方案2:

CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:filePath];
CGImageDestinationRef destination = CGImageDestinationCreateWithURL(url,kUTTypePNG,1,NULL);
CGImageDestinationAddImage(destination,[[asset defaultRepresentation] fullResolutionImage],nil);
CGImageDestinationFinalize(destination);

问题是两种方法在设备上的执行速度都很慢.每张图片大约需要2秒才能执行此操作.这绝对是长久的.

问题:如何加快图像保存过程?或许还有更好的解决方案吗?

更新:
两种解决方案中性能的最佳改进是将图像保存为JPEG格式而不是PNG.
因此,对于解决方案1,已使用UIImageJPEGRepresentation替换了UIImagePNGRepresentation.
对于解决方案2,已将kUTTypePNG替换为kUTTypeJPEG.

另外值得注意的是,第二种解决方案比第一种解决方案更有效.

解决方法

这是因为PNG压缩是一个缓慢的过程,并且在iPhone的处理器上需要一段时间,特别是对于全尺寸摄影.

如何在iOS上快速将ALAsset映像保存到磁盘?的更多相关文章

  1. 吃透移动端 Html5 响应式布局

    这篇文章主要介绍了吃透移动端 Html5 响应式布局,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. 如何在iOS上快速将ALAsset映像保存到磁盘?

    我正在使用ALAsset来检索这样的图像:这返回CGImageRef,我想尽快保存到磁盘…解决方案1:解决方案2:问题是两种方法在设备上的执行速度都很慢.每张图片大约需要2秒才能执行此操作.这绝对是长久的.问题:如何加快图像保存过程?或许还有更好的解决方案吗?

  3. ios – 根据大小类更改约束的乘数

    根据当前的大小类,可以给出一个不同乘数的约束吗?我有一个看法,我想要的是一般尺寸类宽度的一半的屏幕尺寸,我希望它是一个紧凑的尺寸类宽度的屏幕尺寸的80%.在故事板中,我可以选择将不同大小的类别的不同变量添加到约束常量值,但不是乘数值.这是相等的宽度限制.我没有在程序上添加约束,所以我希望他们可能是一个解决方案,在这条路上.任何人都可以告诉我是否可以通过故事板或编程方式来做我正在寻找的内容?

  4. 是否可以从我的iOS应用程序包中删除文件?

    解决方法无法删除捆绑包中的文件.必须对应用程序进行签名,如果以任何方式修改了包,它将不会通过签名.我能想到的唯一其他解决方案是设置Web服务,并让您的应用程序根据需要下载部分内容.这可能是也可能不是可行的解决方案,具体取决于您的应用实际执行的操作.

  5. Swift40/90Days - 用函数式编程解决逻辑难题

    Swift90Days-用函数式编程解决逻辑难题这篇翻译的文章,用两种方法解决了同一个逻辑难题。第二种方法利用了Swift的一些语言特性,实现了函数式编程的解决方案。这样的代码对于指令式编程来说再平常不过,接下来我们就来看下如何用函数式编程解决这个问题。Swift中函数已经是一等公民,这让高阶函数变成可能,也就是说,一个函数可以是通过其它函数组装构成的。思考Swift对于函数式编程的支持让我感觉的兴奋,Excited!

  6. 关于oc和swift混编 框架framework时 只能在真机运行或只能在模拟器单独运行的解决方案

    问题描述:关于oc和swift混编框架framework时只能在真机运行或只能在模拟器单独运行的解决方案。

  7. tableview 最上面有空白 解决方案

    self.automaticallyAdjustsScrollViewInsets=false

  8. 比较 – Swift:如何找出字母是字母数字还是数字

    我想在以下字符串中计算字母,数字和特殊字符的数量:我试过了:但我收到错误。我尝试了各种其他变体–仍然会收到错误–例如:任何线索?可能的Swift解决方案:更新:上述解决方案仅适用于ASCII字符集中的字符,即不识别,é或为字母。以下替代方案解决方案从Foundation框架中使用NSCharacterSet,它可以测试字符基于他们的Unicode字符类:更新2:从Xcode6beta4开始,第一个解决方案不再工作,因为从Swift中删除了isAlpha()和相关的方法。

  9. swift – 我可以指定generic是值类型吗?

    我知道我们可以通过使用AnyObject来基本上指定我们的泛型是任何引用类型:但是有没有办法指定我们的泛型应该只是值类型,不允许引用类型?

  10. swift – 从没有switch / case的枚举中获取相关值

    任何可以将值声明为条件的一部分而不是污染范围的解决方案的加分点.实际上有多种方法可以做到这一点.让我们通过使用计算属性扩展你的枚举:解决方案如果情况通过让外面:通过让内部:带保护套的解决方案通过让外面:通过让内部:最后一个是我个人最喜欢的四种解决方案的语法.

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部