private void FinishTakePhoto() { try { WriteToFile(); Task.Delay(100).ContinueWith((arg) => { try { var item = new SupportImageXF() { OriginalPath = CurrentPhotoPath }; var bitmap = item.OriginalPath.GetOriginalBitmapFromPath(new SyncPhotoOptions() { Width = 300, Height = 300 }); using (var streamBitmap = new MemoryStream()) { bitmap.Compress(Bitmap.CompressFormat.Jpeg, 80, streamBitmap); item.ImageSourceXF = ImageSource.FromStream(() => new MemoryStream(streamBitmap.ToArray().ToArray())); bitmap.Recycle(); } var result = new List <SupportImageXF>() { item }; MessagingCenter.Send <CamActivity, List <SupportImageXF> >(this, Utils.SubscribeImageFromCamera, result); } catch (System.Exception ex) { DebugMessage("ErrorMessage: \n" + ex.Message + "\n" + "Stacktrace: \n " + ex.StackTrace); } }); Finish(); } catch (System.Exception ex) { ShowToastMessage("Failed to take photo"); DebugMessage("ErrorMessage: \n" + ex.Message + "\n" + "Stacktrace: \n " + ex.StackTrace); } }
private async void OnOpenCameraCommand() { var xx = DependencyService.Get <ISupportMedia>(); if (xx != null) { var option = new SyncPhotoOptions(); var result = await xx.IF_OpenCamera(option); ImageItems.Add(result); var result2 = await xx.IF_WriteStreamToFile(result, option); var xxyy = new SupportImageXF() { ImageSourceXF = ImageSource.FromFile(result2.ProcessFilePath) }; ImageItems.Add(xxyy); } }
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQUEST_CAMERA_CAPTURE: if (resultCode == Result.Ok) { Console.WriteLine(mCurrentPhotoPath); Task.Delay(100).ContinueWith((arg) => { var item = new SupportImageXF() { OriginalPath = mCurrentPhotoPath }; var bitmap = item.OriginalPath.GetOriginalBitmapFromPath(new SyncPhotoOptions() { Width = 300, Height = 300 }); using (var streamBitmap = new MemoryStream()) { bitmap.Compress(Bitmap.CompressFormat.Jpeg, 80, streamBitmap); item.ImageSourceXF = ImageSource.FromStream(() => new MemoryStream(streamBitmap.ToArray().ToArray())); bitmap.Recycle(); } var result = new List <SupportImageXF>() { item }; MessagingCenter.Send <GalleryPickerActivity, List <SupportImageXF> >(this, Utils.SubscribeImageFromGallery, result); }); Finish(); } break; default: break; } }
public PhotoSetNative() { galleryImageXF = new SupportImageXF(); galleryImageXF.Checked = false; }
public async Task <SupportImageXF> IF_SyncPhotoFromCloud(ISupportMediaResultListener supportMediaResultListener, SupportImageXF imageSet, SyncPhotoOptions options) { try { bool FinishSync = false; Debug.WriteLine(imageSet.OriginalPath); var sortOptions = new PHFetchOptions(); sortOptions.SortDescriptors = new NSSortDescriptor[] { new NSSortDescriptor("creationDate", false) }; var FeechPhotoByIdentifiers = PHAsset.FetchAssetsUsingLocalIdentifiers( new string[] { imageSet.OriginalPath }, sortOptions).Cast <PHAsset>().FirstOrDefault(); if (FeechPhotoByIdentifiers != null) { var requestOptions = new PHImageRequestOptions() { NetworkAccessAllowed = true, DeliveryMode = PHImageRequestOptionsDeliveryMode.HighQualityFormat, ResizeMode = PHImageRequestOptionsResizeMode.None, }; var requestSize = new CoreGraphics.CGSize(options.Width, options.Height); requestSize = PHImageManager.MaximumSize; PHImageManager.DefaultManager.RequestImageForAsset(FeechPhotoByIdentifiers, requestSize, PHImageContentMode.AspectFit, requestOptions, (result, info) => { if (result != null) { var newImage = result.ResizeImage(options); imageSet.ImageRawData = newImage.AsJPEG(options.Quality).ToArray(); } FinishSync = true; }); do { if (FinishSync) { return(imageSet); } await Task.Delay(1000); } while (!FinishSync); } return(imageSet); } catch (Exception ex) { Debug.WriteLine(ex.StackTrace); return(imageSet); } }