J'ai obtenu une image en utilisant FileOpenPicker. Je veux enregistrer le chemin de l'image dans la base de données, de sorte qu'en utilisant ce chemin, je peux obtenir cette image tout autre écran ,,obtenir le chemin de l'image sélectionnée par fileopenpicker windows phone 8.1 C#
Maintenant, je simplement envoyer mon chemin de l'image à la deuxième page. mais avec le même chemin je ne peux pas obtenir l'image.
Voici mon code.
private async void button_Click(object sender, RoutedEventArgs e)
{
ImagePath = string.Empty;
FileOpenPicker filePicker = new FileOpenPicker();
filePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
filePicker.ViewMode = PickerViewMode.Thumbnail;
filePicker.FileTypeFilter.Clear();
filePicker.FileTypeFilter.Add(".bmp");
filePicker.FileTypeFilter.Add(".png");
filePicker.FileTypeFilter.Add(".jpeg");
filePicker.FileTypeFilter.Add(".jpg");
filePicker.PickSingleFileAndContinue();
view.Activated += viewActivated;
}
private async void viewActivated(CoreApplicationView sender, IActivatedEventArgs args1)
{
FileOpenPickerContinuationEventArgs args = args1 as FileOpenPickerContinuationEventArgs;
if (args != null)
{
if (args.Files.Count == 0) return;
view.Activated -= viewActivated;
StorageFile storageFile = args.Files[0];
var stream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
**//ImagePath is global string. I get the image path here**
ImagePath = storageFile.Path;
var bitmapImage = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
await bitmapImage.SetSourceAsync(stream);
var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(stream);
//image is my image control in Xaml.
image.Source = bitmapImage;
}
}
private void image_click(object sender, TappedRoutedEventArgs e)
{
this.Frame.Navigate(typeof(detail), ImagePath);
}
En tapant sur l'image je passe à l'écran de détail. où j'ai un autre contrôle d'image où je veux montrer la même image ,,,, traversant le chemin.
Mon code d'écran Détail est:
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
var imagePath = e.Parameter as string;
image2.Source = new BitmapImage(new Uri(imagePath, UriKind.RelativeOrAbsolute));
}
Le code ci-dessus ne fonctionne pas.
Alors j'ai essayé une autre façon ,,
var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri(imagePath));
Stream stream = await file.OpenStreamForReadAsync();
using (var memStream = new MemoryStream())
{
await stream.CopyToAsync(memStream);
memStream.Position = 0;
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(memStream.AsRandomAccessStream());
// create a new stream and encoder for the new image
InMemoryRandomAccessStream mrAccessStream = new InMemoryRandomAccessStream();
BitmapEncoder encoder = await BitmapEncoder.CreateForTranscodingAsync(mrAccessStream, decoder);
// convert the bitmap to a 400px by 600px bitmap
encoder.BitmapTransform.ScaledHeight = 400;
encoder.BitmapTransform.ScaledWidth = 600;
try
{
await encoder.FlushAsync();
}
catch (Exception ex)
{
string s = ex.ToString();
}
// render the stream to the screen
WB = new WriteableBitmap(500, 500);
WB.SetSource(mrAccessStream);
image2.Source = WB;
Cela aussi ne fonctionnait pas. Je pense que le problème est dans le chemin. J'ai chemin chemin maladroit comme
"C:\\Data\\Users\\Public\\Pictures\\Saved Pictures\\Image-130872081698409356.jpeg".
S'il vous plaît aidez-moi à se débarrasser de ce problème.
à droite. Windows Phone n'a pas une telle structure de fichiers. vous ne pouvez pas charger un fichier de ce genre. le chemin est incorrect - c'est le problème. avez-vous vu quelle était l'exception? Quelle était l'exception? –
pour les deux façons, il n'y a pas d'exception. Je n'ai tout simplement pas obtenu l'image au contrôle de l'image. – Arsal
Voulez-vous s'il vous plaît laissez-moi savoir que comment obtenir le chemin exact ,, de sorte que je pourrais l'utiliser n'importe où et obtenir l'image. – Arsal