Я начал с этого кода: сеанс 507 WWDC 2017
ПОЛНОСТЬЮ РЕДАКТИРОВАНО
В iOS-камере Roll можно активировать «Портретный эффект»во время редактирования изображения, взятого из моего приложения.Теперь я хочу узнать, как я могу напрямую сохранить изображение с уже активированным этим эффектом?
Я думаю, что мой код правильный, потому что я могу сохранить метаданные глубины.
Я активирую bool в сеансеконфигурация
self.photoOutput.depthDataDeliveryEnabled = YES;
и в сеансе захвата вывода я обновляю настройки:
photoSettings.depthDataDeliveryEnabled = self.photoOutput.isDepthDataDeliveryEnabled;
, и это в моем делегате:
- (void)captureOutput:(AVCapturePhotoOutput *)captureOutput didFinishProcessingPhoto:(AVCapturePhoto *)photo error:(nullable NSError *)error
{
if ( error != nil ) {
NSLog( @"Error capturing photo: %@", error );
return;
}
self.photoData = [photo fileDataRepresentation];
}
но я не понимаю, почему в рулоне системной камеры у меня нет «портретного значка», но он появляется только во время редактирования:
ОБНОВЛЕНИЕ 1
Это метод, который я использую для сохранения фотографии:
- (void)captureOutput:(AVCapturePhotoOutput *)captureOutput didFinishCaptureForResolvedSettings:(AVCaptureResolvedPhotoSettings *)resolvedSettings error:(NSError *)error
{
if ( error != nil ) {
NSLog( @"Error capturing photo: %@", error );
[self didFinish];
return;
}
if ( self.photoData == nil ) {
NSLog( @"No photo data resource" );
[self didFinish];
return;
}
[PHPhotoLibrary requestAuthorization:^( PHAuthorizationStatus status ) {
if ( status == PHAuthorizationStatusAuthorized ) {
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetResourceCreationOptions *options = [[PHAssetResourceCreationOptions alloc] init];
options.uniformTypeIdentifier = self.requestedPhotoSettings.processedFileType;
PHAssetCreationRequest *creationRequest = [PHAssetCreationRequest creationRequestForAsset];
[creationRequest addResourceWithType:PHAssetResourceTypePhoto data:self.photoData options:options];
if ( self.livePhotoCompanionMovieURL ) {
PHAssetResourceCreationOptions *livePhotoCompanionMovieResourceOptions = [[PHAssetResourceCreationOptions alloc] init];
livePhotoCompanionMovieResourceOptions.shouldMoveFile = YES;
[creationRequest addResourceWithType:PHAssetResourceTypePairedVideo fileURL:self.livePhotoCompanionMovieURL options:livePhotoCompanionMovieResourceOptions];
}
} completionHandler:^( BOOL success, NSError * _Nullable error ) {
if ( ! success ) {
NSLog( @"Error occurred while saving photo to photo library: %@", error );
}
[self didFinish];
}];
}
else {
NSLog( @"Not authorized to save photo" );
[self didFinish];
}
}];
}
Так как я могу сохранить свою фотографию с помощьюэффект портрета активирован?
Большое спасибо