在使用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语句打开新创建的图片文件在图库中写入,其中打开的文件数据被复制到目标文件数据并保存。

此操作有效,文件位于图库中,但创建时间来自源图片。我怎么能在运行时添加新的创建时间给它?

在使用StorageFile创建图片时更改图片中的创建日期

解决方案:

我在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();

这将覆盖现有的数据,这是我正在搜索的。