iOS:从相机胶卷中获取最后一张图片

Posted

技术标签:

【中文标题】iOS:从相机胶卷中获取最后一张图片【英文标题】:iOS: Get last image from the camera roll 【发布时间】:2016-08-05 04:19:15 【问题描述】:

我想要保存在相机胶卷中的最后一张图片。 我已经搜索过它,但是我得到了在 ios 9 中已弃用的 ALAssetsLibrary 的结果,所以请为此提供解决方案,因为我没有得到适当的解决方案。

我想要目标 C 中的解决方案。

【问题讨论】:

检查***.com/questions/8867496/… 我已经检查过它是否给出错误 可能会有所帮助:***.com/questions/10200553/… 【参考方案1】:

请检查此代码...它可能会对您有所帮助。

PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];
PHAsset *lastAsset = [fetchResult lastObject];
[[PHImageManager defaultManager] requestImageForAsset:lastAsset
                                          targetSize:self.photoLibraryButton.bounds.size
                                         contentMode:PHImageContentModeAspectFill
                                             options:PHImageRequestOptionsVersionCurrent
                                       resultHandler:^(UIImage *result, NSDictionary *info) 

                                           dispatch_async(dispatch_get_main_queue(), ^

                                               [[self photoLibraryButton] setImage:result forState:UIControlStateNormal];

                                           );
                                       ];

【讨论】:

ALAssetsLibrary 在 ios 9 中已弃用 她提到了 iOS 9 中已弃用的 ALAssetsLibrary ALAssetsLibrary 在 iOS 8 中已被弃用,取而代之的是 phphotoLibrary ;)【参考方案2】:

在 iOS 8 中,Apple 添加了照片库,以便于查询。

import UIKit
import Photos

struct LastPhotoRetriever 
    func queryLastPhoto(resizeTo size: CGSize?, queryCallback: (UIImage? -> Void)) 
        let fetchOptions = PHFetchOptions()
        fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

//        fetchOptions.fetchLimit = 1 // This is available in iOS 9.

        if let fetchResult = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: fetchOptions) 
            if let asset = fetchResult.firstObject as? PHAsset 
                let manager = PHImageManager.defaultManager()

                // If you already know how you want to resize, 
                // great, otherwise, use full-size.
                let targetSize = size == nil ? CGSize(width: asset.pixelWidth, height: asset.pixelHeight) : size!

                // I arbitrarily chose AspectFit here. AspectFill is 
                // also available.
                manager.requestImageForAsset(asset,
                    targetSize: targetSize,
                    contentMode: .AspectFit,
                    options: nil,
                    resultHandler:  image, info in

                    queryCallback(image)
                )
            
        
    

【讨论】:

我是怎么设置的?例如我有 self.myImageView.image = ????? (不明白),提前谢谢 @JirsonTavera 您必须在queryCallbackclosure 中将收到的图像设置为您的imageView。

以上是关于iOS:从相机胶卷中获取最后一张图片的主要内容,如果未能解决你的问题,请参考以下文章

从 iOS 中的相机胶卷中获取特定图像

如何获取用户/相机拍摄的最后一张照片

从 iPhone 相机胶卷中获取图像

如何使用 Photos 框架从 iOS 上的相机胶卷中获取最新照片?

科尔多瓦,从相机胶卷中获取所有照片

如何从相机胶卷中选择一张图片,然后将其保存到我的应用程序的“支持文件”文件夹中,然后选择保存文件的名称?