В настоящее время я следую за тем, как загрузить изображение из фотогалереи телефона ссылка здесь , чтобы пользователи могли загружать изображение в мое приложение, которое они могут установить в качестве своего профиля. Я могу получить изображение из галереи телефона, однако, когда я пытаюсь сохранить его, я не могу получить источник изображения из xaml
.
Ниже приведены xaml
для изображения и кнопка, на которойпользователь нажимает на кнопку, чтобы загрузить изображение.
<Button Text="Pick a Profile Image"
Clicked="OnPictureButton_Clicked"
Grid.Column="0"></Button>
<Image Source="{Binding Employee.ProfilePicture}"
Grid.Column="1"
x:Name="profilePicture"
Grid.RowSpan="2"
WidthRequest="200"></Image>
Вот соответствующий код C #:
private async void OnPictureButton_Clicked(object sender, EventArgs e)
{
(sender as Button).IsEnabled = false;
// _stream is a private global variable
// Allow the user to view images on the phone
_stream = await DependencyService.Get<IPhotoPickerService>().GetImageStreamASync();
// If they select an image, set it as the source for profilePicture
if (_stream != null)
{
profilePicture.Source = ImageSource.FromStream(() => _stream);
}
(sender as Button).IsEnabled = true;
}
private async void Clicked_EmployeeSaved(object sender, EventArgs e)
{
var data = (EmployeeFull)BindingContext;
var uploadedPicture = profilePicture.Source; // Should be uploaded image
// Testing how to get the source for the image (Can disregard for question)
Bitmap bitmap = BitmapFactory.DecodeStream(_stream);
MemoryStream ms = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, ms);
byte[] byteArray;
byteArray = ms.ToArray();
}
Теперь я знаю, что когда пользователь выбирает изображение из галереи на своем устройстве, поток закрывается, и поэтому я не смогу получить к нему доступ позже в коде, как я пытался во второй показанной функции.
Однако я не могу получить имя изображения, которое у меня естьвыбран для загрузки. На экране пользователь может видеть это изображение, так как я установил выбранное изображение в качестве источника для тега profilePicture
, но когда я пытаюсь получить этот источник, когда пользователь нажимает «сохранить», он показывает объект ImageSource`, а не строка, которую я ожидал.
Есть ли другой способ получить имя загруженного изображения?