我使用存储文件在照片库中的Windows Phone 8.1保存的图片相册中创建图片,到目前为止这项工作还可以。我使用了保存到这张新图片的图片流,下面你会看到代码片段。我的问题是新创建的图片具有流的创建日期(源文件),如何将新文件创建日期更改为DateTime.Now?!
这是我如何保存图片:
var pictureURL = "ms-appx:///Assets/folder/Picture.jpg";
StorageFile storageFile = await KnownFolders.SavedPictures.CreateFileAsync("Picture.jpg", CreationCollisionOption.GenerateUniqueName);
StorageFile pictureFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(pictureURL));
using (var imageFile = await pictureFile.OpenStreamForReadAsync())
{
using (var imageDestination = await storageFile.OpenStreamForWriteAsync())
{
await imageFile.CopyToAsync(imageDestination);
}
}
上面的代码片段创建了一张名为" storageFile"如你所见,然后从Application Uri获取文件" pictureFile"。然后通过使用打开源图片作为Stream读取,在此使用另一个using语句打开库中新创建的图片文件进行写入,在其中打开的文件数据被复制到目标文件数据并保存。
这个工作,文件在库中,但创建时间来自源图片。我如何在运行时添加新的创建时间?!
答案 0 :(得分:1)
这是解决方案:
我在Windows.Storage.FileProperties中找到了ImeProperties,并且使用下面编辑过的代码,您可以在更改EXIF数据后立即保存图片,例如Date Taken和Camera Manufacturer等详细信息。
var pictureURL = "ms-appx:///Assets/folder/Picture.jpg";
StorageFile storageFile = await KnownFolders.SavedPictures.CreateFileAsync("Picture.jpg", CreationCollisionOption.GenerateUniqueName);
StorageFile pictureFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(pictureURL));
using (var imageFile = await pictureFile.OpenStreamForReadAsync())
{
using (var imageDestination = await storageFile.OpenStreamForWriteAsync())
{
await imageFile.CopyToAsync(imageDestination);
}
}
ImageProperties imageProperties = await storageFile.Properties.GetImagePropertiesAsync();
imageProperties.DateTaken = DateTime.Now;
imageProperties.CameraManufacturer = "";
imageProperties.CameraModel = "";
await imageProperties.SavePropertiesAsync();
这将覆盖现有数据,这就是我要搜索的内容。