积极答复者
writeablebitmap保存中出现的问题

问题
-
private async void SaveImage(WriteableBitmap src)
{
StorageFolder installedLocation = KnownFolders.PicturesLibrary;
string name = DateTime.Now.ToString();
foreach (char c in name)
{
if (c >= 48 && c <= 57) Name += c;
}
var _Folder = KnownFolders.PicturesLibrary;
var _Folder1 = await _Folder.CreateFolderAsync(Name, Windows.Storage.CreationCollisionOption.ReplaceExisting);
var File = await _Folder1.CreateFileAsync(Name, Windows.Storage.CreationCollisionOption.ReplaceExisting);
try
{Guid encoderId= Windows.Graphics.Imaging.BitmapEncoder.JpegEncoderId;
using (IRandomAccessStream fileStream = await File.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite))
{
Windows.Graphics.Imaging.BitmapEncoder encoder = await Windows.Graphics.Imaging.BitmapEncoder.CreateAsync(encoderId, fileStream);Stream pixelStream = src.PixelBuffer.AsStream();
byte[] pixels = new byte[pixelStream.Length];
pixelStream.Read(pixels, 0, pixels.Length);
for (int i = 0; i < pixels.Length; i += 4)
{byte temp = pixels[i];
pixels[i] = pixels[i + 2];
pixels[i + 2] = temp;
}
//pixal format shouldconvert to rgba8encoder.SetPixelData(Windows.Graphics.Imaging.BitmapPixelFormat.Rgba8, Windows.Graphics.Imaging.BitmapAlphaMode.Straight,
(uint)src.PixelWidth, (uint)src.PixelHeight, 96, 96, pixels);await encoder.FlushAsync();
}}
catch (Exception e)
{throw e;
}
这段代码在保存时产生一个没有后缀名没有内容的文件。为什么?其实我只是想实现保存writeablebitmap但是不使用FileSavePicker save = new FileSavePicker();就是不需要用户选择直接保存的功能。
- 已编辑 Jweiwei 2013年7月4日 8:34
答案
-
string str = ".jpg";
StorageFolder Folder1 = await installedLocation.CreateFolderAsync(Name, Windows.Storage.CreationCollisionOption.ReplaceExisting);Name += str;
StorageFile imageFile = await Folder1.CreateFileAsync(Name, CreationCollisionOption.GenerateUniqueName); 这样就可以了。Name中需要包含类型
- 已标记为答案 Jweiwei 2013年7月5日 3:42
全部回复
-
string str = ".jpg";
StorageFolder Folder1 = await installedLocation.CreateFolderAsync(Name, Windows.Storage.CreationCollisionOption.ReplaceExisting);Name += str;
StorageFile imageFile = await Folder1.CreateFileAsync(Name, CreationCollisionOption.GenerateUniqueName); 这样就可以了。Name中需要包含类型
- 已标记为答案 Jweiwei 2013年7月5日 3:42