Vous ne pouvez pas extraire le bitmap à partir d'un BitmapImage
. Il n'y a aucun moyen d'enregistrer un BitmapImage
directement dans le fichier. Le seul moyen est de se souvenir de la source originale et de l'enregistrer. Pour plus de détails sur sauvegarder BitmapImage
dans le fichier s'il vous plaît référence this thread.
Si vous connaissez la source d'origine, par exemple, vous lisez le BitmapImage
du fichier choisi par un FileOpenPicker
, vous pouvez lire le fichier d'image à un WriteableBitmap
vous pouvez extraire le PixelBuffer
, encoder avec un BitmapEncoder
et puis enregistrer le flux résultant à un StorageFile
comme Rob a dit. Exemple de code comme suit:
private async void btncreate_Click(object sender, RoutedEventArgs e)
{
FileOpenPicker openpicker = new FileOpenPicker();
openpicker.FileTypeFilter.Add(".jpg");
openpicker.FileTypeFilter.Add(".png");
StorageFile originalimage = await openpicker.PickSingleFileAsync();
WriteableBitmap writeableimage1;
using (IRandomAccessStream stream = await originalimage.OpenAsync(FileAccessMode.Read))
{
SoftwareBitmap softwareBitmap;
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
softwareBitmap = await decoder.GetSoftwareBitmapAsync();
writeableimage1 = new WriteableBitmap(softwareBitmap.PixelWidth, softwareBitmap.PixelHeight);
writeableimage1.SetSource(stream);
}
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile newimage = await folder.CreateFileAsync(originalimage.Name, CreationCollisionOption.ReplaceExisting);
using (IRandomAccessStream ras = await newimage.OpenAsync(FileAccessMode.ReadWrite))
{
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, ras);
var stream = writeableimage1.PixelBuffer.AsStream();
byte[] buffer = new byte[stream.Length];
await stream.ReadAsync(buffer, 0, buffer.Length);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)writeableimage1.PixelWidth, (uint)writeableimage1.PixelHeight, 96.0, 96.0, buffer);
await encoder.FlushAsync();
}
}
Pour la liste des images, vous devrez peut-être les enregistrer un par un.
"Cela ne fonctionne pas" - Quelle erreur obtenez-vous? –
Veuillez voir la question éditée. Merci – cykopath