gpt4 book ai didi

ios - 如何使用 PHImageManager 获取原始图像

转载 作者:行者123 更新时间:2023-11-29 05:43:43 25 4
gpt4 key购买 nike

我使用下面的代码从 PHAsset 获取原始图像:

PHImageRequestOptions *requestOptions = [[PHImageRequestOptions alloc] init];
requestOptions.resizeMode = PHImageRequestOptionsResizeModeNone;
requestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;

[[PHImageManager defaultManager] requestImageForAsset:phasset
targetSize:PHImageManagerMaximumSize
contentMode:PHImageContentModeDefault
options:requestOptions
resultHandler:^void(UIImage *image, NSDictionary *info) {
if (image) {
}
}];

但是发现,图像尺寸大于原始尺寸。我选择了 54 MB 文件,但在响应中发现其大小为 123.5MB。使用下面的代码来计算图像大小:

NSData *imgData = UIImageJPEGRepresentation(image, 1.0);
NSLog(@"img size: %@", [[NSByteCountFormatter new] stringFromByteCount:imgData.length]);

知道如何使用 [[PHImageManager defaultManager] requestImageForAsset: API 获取原始图像。

最佳答案

我将在 Swift 5 中分享我的代码。就我而言,以下代码在 iOS 14.5.1 上运行良好。

extension PHAsset {
func getImageData(_ index: Int, completionHandler: @escaping((_ index: Int, _ image: UIImage?)->Void)) {
let options = PHImageRequestOptions()
options.isSynchronous = true
options.isNetworkAccessAllowed = true
PHImageManager.default().requestImage(for: self, targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: options, resultHandler: { (image, info) in
completionHandler(index, image)
})
}
}

因为我在后台线程中调用 getImageData 并且返回值的顺序不正确,所以我使用一个名为index的变量来调用 order ,然后将其传递给completionHanlder,以便我可以知道返回值在哪里。如果不需要索引变量,可以将其删除。

关于ios - 如何使用 PHImageManager 获取原始图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56338800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com