чтобы я мог сохранить изображение?
Изображение может быть найдено только в том формате, что это не файл, а просто BitmapImage.
Я знаю этот путь в C # Есть идеи, как сделать это в C ++?
private static async Task<StorageFile> SaveAsJpeg(WriteableBitmap wb)
{
byte[] pixels;
using (var stream = wb.PixelBuffer.AsStream())
{
pixels = new byte[(uint)stream.Length];
await stream.ReadAsync(pixels, 0, pixels.Length);
}
var name = String.Format("{0}_{1:yyyy-MM-dd_HH-mm-ss}.jpg", "MyApp", DateTime.Now);
var outputFile = await KnownFolders.PicturesLibrary.CreateFileAsync(name, CreationCollisionOption.ReplaceExisting);
using (var writeStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite))
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, writeStream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied,
(uint)wb.PixelWidth, (uint)wb.PixelHeight,
96, 96, pixels);
await encoder.FlushAsync();
using (var outputStream = writeStream.GetOutputStreamAt(0))
{
await outputStream.FlushAsync();
}
}
return outputFile;
Не нужно быть задачей, это может быть пусто, нет проблем …
Ну, во-первых, если вы загрузили BitmapImage
во-первых, тогда у вас есть доступ к исходному файлу, поэтому самым простым решением будет скопировать исходный файл. Для WriteableBitmap
— это немного похоже на версию C #, но, конечно, немного сложнее, когда вы начинаете работать с COM-подобными методами. Посмотрите, поможет ли вам ответ Джеймса на мой вопрос о получении доступа к пикселям:
Как получить доступ к пикселям WriteableBitmap.PixelBuffer с помощью C ++?