[英]convert image from gallery in thumbnail (xamarin forms)
這是我的代碼,用於從我的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;
}
}
但是, 文件始終為空
從我的PCL項目中的庫中選擇一個圖像,我想將其調整為一個小圖像
您可以使用MediaPlugin來實現此功能,這是它的簡單用法 :
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用於調整所選圖像的大小,您可以在此處找到源代碼。
更新:
這是我的代碼,它在我身邊很好用:
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.