这是我的代码,用于从我的pcl项目中的库中选择一个图像(ios / android)
protected async Task PickImage() { try { Stream stream = await DependencyService.Get<IPicturePicker>().GetimagestreamAsync(); { Image image = new Image { Source = ImageSource.FromStream(() => stream), Backgroundcolor = color.Gray }; byte[] ImageData = Utils.Base64Utils.ToByteArray(stream); _base64String = Convert.ToBase64String(ImageData); editar_foto_perfil.source = ImageSource.FromStream(() => new MemoryStream(Convert.FromBase64String(_base64String))); user.trocaimage = _base64String; if (Device.OS == TargetPlatform.iOS) { user.cont_datanascimento = editar_date_datanasc.Date.ToString("yyyyMMdd"); if (editar_entry_nome.Text != null) user.cont_nome = editar_entry_nome.Text; if (editar_picker_estado.Selectedindex != -1) user.cont_estado = editar_picker_estado.Items[editar_picker_estado.Selectedindex].ToString(); if (editar_picker_cIDade.Selectedindex != -1) user.cont_cIDade = editar_picker_cIDade.Items[editar_picker_cIDade.Selectedindex].ToString(); if (editar_entry_senha.Text != null) user.usua_senha = editar_entry_senha.Text; if (editar_entry_email.Text != null) user.usua_login = editar_entry_email.Text; menu.RecriaEditarIOS(user); } } } catch (Exception ex) { var s = ex.Message; } }
有时候我无法将拍摄的图像发送到服务器.通常情况下,它会在图像很大时发生,因此,我想将其调整为小图像并将其发送到服务器.
有些想法?
更新
我正在尝试使用Crossmedia插件,我们的朋友在评论中建议…
然后我改变了我的方法:
protected async Task PickImage() { try { //Stream stream = await DependencyService.Get<IPicturePicker>().GetimagestreamAsync(); await CrossMedia.Current.Initialize(); if (!CrossMedia.Current.IsPickPhotoSupported) { displayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK"); return; } else { var file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions { PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium, }); } } catch (Exception ex) { var s = ex.Message; } }
但是,文件始终为空
解决方法:
pick an image from the gallery in my PCL project and I want to resize it to a small image
您可以使用MediaPlugin来实现此功能,这是它的simple usage:
pickPhoto.Clicked += async (sender, args) =>{ if (!CrossMedia.Current.IsPickPhotoSupported) { displayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK"); return; } var file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions { PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium, }); if (file == null) return; var stream = file.GetStream();}
类PickMediaOptions用于调整所选图像的大小,您可以找到源代码here.
更新:
这是我的代码,它在我身边很好用:
private async voID button_Clicked(object sender, EventArgs e){ await PickImage();}protected async Task PickImage(){ try { await CrossMedia.Current.Initialize(); if (!CrossMedia.Current.IsPickPhotoSupported) { displayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK"); return; } else { var file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions { PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium, }); if (file == null) return; image.source = ImageSource.FromStream(() => { var stream = file.GetStream(); file.dispose(); return stream; }); } } catch (Exception ex) { var s = ex.Message; }}
总结 以上是内存溢出为你收集整理的android – 从缩略图中的图库转换图像(xamarin表单)全部内容,希望文章能够帮你解决android – 从缩略图中的图库转换图像(xamarin表单)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)