private async void OnGetImage(object sender, EventArgs e) { var settings = new ImageConstructionSettings { Padding = 12, StrokeColor = Color.FromRgb(25, 25, 25), BackgroundColor = Color.FromRgb(225, 225, 225), DesiredSizeOrScale = 2f }; var image = await padView.GetImageStreamAsync(SignatureImageFormat.Png, settings); if (image == null) { await DisplayAlert("Error", "A signature is required to check assets out.", "OK"); return; } var base64_ = AppImages.StreamToBase64String(image); IEnumerable <PropertyPassItemDbTable> PropertyPass = PropertyPassClass.PropertyPassItem.ConvertListToDb(_PropertyPassTableID, _PropertyPassDisplayList); Database.PropertyPassItem.InsertAll(_connection, PropertyPass); var sigupdate = Database.PropertyPassTable.UpdateSignature(_connection, base64_, _PropertyPassTableID.PropertyPassID_Internal); if (sigupdate == "") { await DisplayAlert("Complete!", "The asset(s) have been checked out.", "OK"); } else { await DisplayAlert("Error", sigupdate, "OK"); } await Navigation.PopToRootAsync(); }
private async void Save() { var settings = new ImageConstructionSettings { StrokeColor = Xamarin.Forms.Color.Black, BackgroundColor = Xamarin.Forms.Color.White, StrokeWidth = 1f }; try { using (var bitmap = await GetImageStreamAsync(SignatureImageFormat.Png, settings)) { //var s = Convert.ToBase64String(ReadFully(bitmap)); if (bitmap == null) { var a = ""; } else { var temp = ImageHelper.ReadFully(bitmap); var uiimage = ImageHelper.ToImage(temp); uiimage = ImageHelper.MaxResizeImage(uiimage, 200, 100); temp = ImageHelper.ToArray(uiimage); DefektacijasAkts.Paraksts = Convert.ToBase64String(temp); RaisePropertyChanged(nameof(Paraksts)); } } App.Database.InsertDefektacijasAkts(DefektacijasAkts); } catch (Exception ex) { } }
private async void OnGetImage(object sender, EventArgs e) { var settings = new ImageConstructionSettings { Padding = 12, StrokeColor = Color.FromRgb(25, 25, 25), BackgroundColor = Color.FromRgb(225, 225, 225), DesiredSizeOrScale = 2f }; var image = await SignatureView.GetImageStreamAsync(SignatureImageFormat.Png, settings); if (image != null) { /* * DataSource.SignatureImage = new Image * { * Aspect = Aspect.AspectFit, * Source = ImageSource.FromStream(() => image) * }; */ DataSource.SignatureStream = image; } await Navigation.PopModalAsync(); }
private async void OnGetImage(object sender, EventArgs e) { var settings = new ImageConstructionSettings { Padding = 12, StrokeColor = Color.FromRgb(25, 25, 25), BackgroundColor = Color.FromRgb(225, 225, 225), DesiredSizeOrScale = 2f }; var image = await padView.GetImageStreamAsync(SignatureImageFormat.Png, settings); if (image == null) { return; } var page = new ContentPage { Title = "Signature", Content = new Image { Aspect = Aspect.AspectFit, Source = ImageSource.FromStream(() => image) } }; await Navigation.PushAsync(page); }
private async Task OnGetImage() { var settings = new ImageConstructionSettings { Padding = 12, StrokeColor = Color.FromRgb(25, 25, 25), BackgroundColor = Color.FromRgb(225, 225, 225), DesiredSizeOrScale = 2f }; var image = await padView.GetImageStreamAsync(SignatureImageFormat.Png, settings); if (image == null) { return; } IFolder rootFolder = FileSystem.Current.LocalStorage; IFolder folder = await rootFolder.CreateFolderAsync("MySubFolder", CreationCollisionOption.OpenIfExists); IFile file = await folder.CreateFileAsync("answer.png", CreationCollisionOption.ReplaceExisting); using (var fooStream = await file.OpenAsync(FileAccess.ReadAndWrite)) { await image.CopyToAsync(fooStream); } //var page = new ContentPage //{ // Title = "Signature", // Content = new Image // { // Aspect = Aspect.AspectFit, // Source = ImageSource.FromStream(() => image) // } //}; //await Navigation.PushAsync(page); }
private async void OnShowImage(object sender, EventArgs e) { // get the file name var folder = FileSystem.Current.LocalStorage; var file = await folder.CreateFileAsync($"signature.jpg", CreationCollisionOption.GenerateUniqueName); // create some settings to control the output var settings = new ImageConstructionSettings { BackgroundColor = Color.White, StrokeColor = Color.Black, }; // write the signature stream to the file stream using (var stream = await signaturePad.GetImageStreamAsync(SignatureImageFormat.Jpeg, settings)) using (var fileStream = await file.OpenAsync(FileAccess.ReadAndWrite)) { // copy the bytes await stream.CopyToAsync(fileStream); } // success await DisplayAlert("Signature Saved", "Signature file saved successfully.\nLoading preview...", "OK"); // show the image preview var previewPage = new ContentPage { Title = "View Signature", Content = new Image { Source = ImageSource.FromFile(file.Path), Margin = new Thickness(20) } }; await Navigation.PushAsync(previewPage); }
//Method for when the signature is completed private async void OnSendClicked(object sender, EventArgs e) { //Accessing file system and creating file var folder = FileSystem.Current.LocalStorage; //Creating file without limitng the number of files locally //var file = await folder.CreateFileAsync($"signature.png", //CreationCollisionOption.GenerateUniqueName); //Better implementation. Only one sign file locally being replaced //Whats the file name prefix suffix? var file = await folder.CreateFileAsync("signature.png", CreationCollisionOption.ReplaceExisting); //Creating the image of signature var settings = new ImageConstructionSettings { BackgroundColor = Color.White, StrokeColor = Color.Black, }; try { using (var stream = await signaturePad.GetImageStreamAsync(SignatureImageFormat.Png, settings)) using (var fileStream = await file.OpenAsync(FileAccess.ReadAndWrite)) { //Trying to stop the file from being created as blank (Needs work) if (!stream.Equals(null)) { await stream.CopyToAsync(fileStream); } } //Display Thank you for signing. (Optional) await DisplayAlert("Thank you", "Thanks for signing, " + "Your signature has been received.", "OK"); System.Diagnostics.Debug.WriteLine($"File Path: {file.Path}"); //Clear the signature from pad after the file is saved. signaturePad.Clear(); await Navigation.PopAsync(); //Push to S3 //AWS VS Toolkit. Needs research. //AWS Credentials - Account Number, Secret Key and one more //Bucket(s) name(s) //File Name to be stored in //Where in DB is it updated ? //Delete local device file to save storage on device //Is this optional ? } catch (NullReferenceException) { //Log Error here System.Diagnostics.Debug.WriteLine("Null Reference Exception caught"); await DisplayAlert("Error", "Please sign.", "OK"); } catch (Exception) { //Log error await DisplayAlert("Oops!", $"Something went wrong. Please make " + "sure to sign.", "OK"); } }
//Method for when the signature is completed private async void OnSendClicked(object sender, EventArgs e) { activitySpinner.IsVisible = true; //Accessing file system and creating file var folder = FileSystem.Current.LocalStorage; var file = await folder.CreateFileAsync($"{req.RequestId}", CreationCollisionOption.ReplaceExisting); //Creating the image of signature var settings = new ImageConstructionSettings { BackgroundColor = Color.White, StrokeColor = Color.Black, }; try { using (var stream = await signaturePad.GetImageStreamAsync(SignatureImageFormat.Png, settings)) using (var fileStream = await file.OpenAsync(FileAccess.ReadAndWrite)) { //Trying to stop the file from being created as blank (Needs work) if (!stream.Equals(null)) { await stream.CopyToAsync(fileStream); } } activitySpinner.IsVisible = false; //Push to S3 if (_awsServ.SaveFileToS3(file)) { //Display Thank you for signing. (Optional) await DisplayAlert("Thank you", "Thanks for signing, " + "Your signature has been received.", "OK"); //Clear the signature from pad after the file is saved. signaturePad.Clear(); //Popping back to the mainpage await Navigation.PopToRootAsync(); } else { await DisplayAlert("Upload Failed", "Your signature has not been received. Send Again.", "OK"); } } catch (NullReferenceException) { activitySpinner.IsVisible = false; //Log Error here System.Diagnostics.Debug.WriteLine("Null Reference Exception caught"); await DisplayAlert("Error", "Please sign.", "OK"); } catch (Exception) { activitySpinner.IsVisible = false; //Log error await DisplayAlert("Oops!", "Something went wrong. Please make sure to sign.", "OK"); } activitySpinner.IsVisible = false; }