gpt4 book ai didi

ios - 将使用UIImagePickerController拍摄的图像保存为HEIC格式的照片胶卷

转载 作者:行者123 更新时间:2023-12-01 21:59:04 24 4
gpt4 key购买 nike

如果我使用已知的方法(UIImageWriteToSavedPhotosAlbum()[PHAssetChangeRequest creationRequestForAssetFromImage:img])将图像保存到照片胶卷中,则随后选择的带有UIImagePickerController的已保存照片将为我提供.jpg图像。
info[UIImagePickerControllerReferenceURL]给出assets-library://asset/asset.JPG?id=B8B231DC-3A84-4F65-AD5E-D6C431CB5F8B&ext=JPG

[((PHAsset*)info[UIImagePickerControllerPHAsset]) valueForKey:@"filename"]例如给我@"IMG_5512.JPG"

但是,如果我使用“相机”应用程序拍摄照片,则使用UIImagePickerController选择的照片具有HEIC扩展名(假设“高效”设置在“相机”设置中有效)。

那么,以什么方式将HEIC格式保存到照片胶卷中的便捷方法是:- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

最佳答案

感谢Matt的评论,我得以解决此问题。
How to save image taken from UIImagePickerController as HEIF file?有一个非常相似的问题,但不完全相同。

UIImage* img=(UIImage*)info[UIImagePickerControllerOriginalImage];
NSDictionary* meta=(NSDictionary*)info[UIImagePickerControllerMediaMetadata];
CIContext* ctx=[CIContext context];
CIImage* ci=[[CIImage alloc] initWithImage:img options:@{kCIImageProperties:meta}];
NSData* heicData=[ctx HEIFRepresentationOfImage:ci format:kCIFormatRGBA8 colorSpace:ctx.workingColorSpace options:@{}];
NSString* __block newId=nil;
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetCreationRequest *request = [PHAssetCreationRequest creationRequestForAsset];
[request addResourceWithType:PHAssetResourceTypePhoto data:heicData options:nil];
newId = request.placeholderForCreatedAsset.localIdentifier;
} completionHandler:^(BOOL success, NSError * _Nullable error) {
if (success) {
PHFetchResult* fr=[PHAsset fetchAssetsWithLocalIdentifiers:@[newId] options:nil];
PHAsset* phass=fr.firstObject;
NSLog(@"PHAsset:%@",phass);
} else {
NSLog(@"error:%@",error);
}
}]

关于ios - 将使用UIImagePickerController拍摄的图像保存为HEIC格式的照片胶卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60670294/

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