在使用StorageFile创建图片时更改图片中的创建日期
本文关键字:创建日期 StorageFile 创建 | 更新日期: 2023-09-27 18:09:49
我使用Storagefile在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"的新图片,然后从"pictureFile"的应用程序Uri中获取该文件。然后通过using打开源图片作为流读取,在此使用另一个using语句打开新创建的图片文件在图库中写入,其中打开的文件数据被复制到目标文件数据并保存。
此操作有效,文件位于图库中,但创建时间来自源图片。我怎么能在运行时添加新的创建时间给它?
解决方案:
我在Windows.Storage.FileProperties中找到了ImeProperties,并使用下面编辑的代码可以保存图片,然后更改EXIF数据,如拍摄日期和相机制造商和其他详细信息。
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();
这将覆盖现有的数据,这是我正在搜索的。