protected async System.Threading.Tasks.Task TakeSnapshotAsync <T>(T list, string fieldName) where T : ObservableCollection <ImageCapture> { try { CameraCaptureUI ccui = new CameraCaptureUI(); var storagefile = await ccui.CaptureFileAsync(CameraCaptureUIMode.Photo); if (storagefile != null) { var ms = await RenderDataStampOnSnap.RenderStaticTextToBitmap(storagefile); var msrandom = new MemoryRandomAccessStream(ms); Byte[] bytes = new Byte[ms.Length]; await ms.ReadAsync(bytes, 0, (int)ms.Length); // StorageFile file = await KnownFolders.PicturesLibrary.CreateFileAsync("Image.png", Windows.Storage.CreationCollisionOption.GenerateUniqueName); StorageFile file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(DateTime.Now.Ticks.ToString() + storagefile.Name, CreationCollisionOption.ReplaceExisting); using (var strm = await file.OpenStreamForWriteAsync()) { await strm.WriteAsync(bytes, 0, bytes.Length); strm.Flush(); } var ic = new ImageCapture { ImagePath = file.Path, ImageBinary = Convert.ToBase64String(bytes), CaseServiceRecId = ((BaseModel)this.Model).VehicleInsRecID, FileName = string.Format("{0}_{1}", fieldName, list.Count + 1) }; list.Add(ic); var imageTable = await SqliteHelper.Storage.LoadTableAsync <ImageCapture>(); var dbIC = imageTable.SingleOrDefault(x => x.CaseServiceRecId == ic.CaseServiceRecId && x.FileName == string.Format("{0}_{1}", fieldName, list.Count + 1)); if (dbIC == null) { await SqliteHelper.Storage.InsertSingleRecordAsync <ImageCapture>(ic); } else { dbIC.ImagePath = ic.ImagePath; dbIC.ImageBinary = ic.ImageBinary; await SqliteHelper.Storage.UpdateSingleRecordAsync <ImageCapture>(dbIC); } } } catch (Exception) { throw; } }
public ImageMarkupPageViewModel() { this.Snapshots = new ObservableCollection <ImageCapture>(); DoneCommand = DelegateCommand.FromAsyncHandler(async() => { try { var caseNumber = ApplicationData.Current.LocalSettings.Values["CaseNumber"].ToString(); foreach (var item in this.Snapshots) { var image = await StorageFile.GetFileFromPathAsync(item.ImagePath); var curMarkupImageFile = await ApplicationData.Current.RoamingFolder.TryGetItemAsync("markupimage_" + caseNumber + this.Snapshots.IndexOf(item)) as StorageFile; if (image != null && curMarkupImageFile != null) { var ms = await RenderDataStampOnSnap.InterpolateImageMarkup(image, curMarkupImageFile); var msrandom = new MemoryRandomAccessStream(ms); Byte[] bytes = new Byte[ms.Length]; await ms.ReadAsync(bytes, 0, (int)ms.Length); // StorageFile file = await KnownFolders.PicturesLibrary.CreateFileAsync("Image.png", Windows.Storage.CreationCollisionOption.GenerateUniqueName); StorageFile file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(DateTime.Now.Ticks.ToString() + curMarkupImageFile.Name, CreationCollisionOption.ReplaceExisting); using (var strm = await file.OpenStreamForWriteAsync()) { await strm.WriteAsync(bytes, 0, bytes.Length); strm.Flush(); } await UpdateImageAsync(new ImageCapture { CaseServiceRecId = Convert.ToInt64(ApplicationData.Current.LocalSettings.Values["VehicleInsRecId"]), ImageBinary = Convert.ToBase64String(bytes), ImagePath = file.Path, FileName = item.FileName + "Marked" }); } } } catch (Exception) { throw; } }); }
async public virtual System.Threading.Tasks.Task TakePictureAsync(ImageCapture param, string fieldName) { try { CameraCaptureUI cam = new CameraCaptureUI(); var storagefile = await cam.CaptureFileAsync(CameraCaptureUIMode.Photo); if (storagefile != null) { using (MemoryStream ms = await RenderDataStampOnSnap.RenderStaticTextToBitmap(storagefile)) { using (var msrandom = new MemoryRandomAccessStream(ms)) { Byte[] bytes = new Byte[ms.Length]; await ms.ReadAsync(bytes, 0, (int)ms.Length); // StorageFile file = await KnownFolders.PicturesLibrary.CreateFileAsync("Image.png", Windows.Storage.CreationCollisionOption.GenerateUniqueName); StorageFile file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(DateTime.Now.Ticks.ToString() + storagefile.Name, CreationCollisionOption.ReplaceExisting); using (var strm = await file.OpenStreamForWriteAsync()) { await strm.WriteAsync(bytes, 0, bytes.Length); strm.Flush(); } param.ImagePath = file.Path; param.ImageBinary = Convert.ToBase64String(bytes); param.CaseServiceRecId = ((BaseModel)this.Model).VehicleInsRecID; param.FileName = fieldName; await UpdateImageAsync(param); } } } } catch (Exception) { throw; } }