void DidFinishProcessingRawPhoto (AVCapturePhotoOutput captureOutput,
CMSampleBuffer rawSampleBuffer, CMSampleBuffer previewPhotoSampleBuffer,
AVCaptureResolvedPhotoSettings resolvedSettings, AVCaptureBracketedStillImageSettings bracketSettings,
NSError error)
{
if (rawSampleBuffer == null) {
Console.WriteLine ($"Error occurred while capturing photo: {error}");
return;
}
var filePath = Path.Combine (Path.GetTempPath (), $"{resolvedSettings.UniqueID}.dng");
NSData imageData = AVCapturePhotoOutput.GetDngPhotoDataRepresentation (rawSampleBuffer, previewPhotoSampleBuffer);
imageData.Save (filePath, true);
PHPhotoLibrary.RequestAuthorization (status => {
if (status == PHAuthorizationStatus.Authorized) {
PHPhotoLibrary.SharedPhotoLibrary.PerformChanges (() => {
// In iOS 9 and later, it's possible to move the file into the photo library without duplicating the file data.
// This avoids using double the disk space during save, which can make a difference on devices with limited free disk space.
var options = new PHAssetResourceCreationOptions ();
options.ShouldMoveFile = true;
PHAssetCreationRequest.CreationRequestForAsset ().AddResource (PHAssetResourceType.Photo, filePath, options); // Add move (not copy) option
}, (success, err) => {
if (!success)
Console.WriteLine ($"Error occurred while saving raw photo to photo library: {err}");
else
Console.WriteLine ("Raw photo was saved to photo library");
NSError rErr;
if (NSFileManager.DefaultManager.FileExists (filePath))
NSFileManager.DefaultManager.Remove (filePath, out rErr);
});
} else {
Console.WriteLine ("Not authorized to save photo");
}
});
}