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

时间:2015-08-25 14:40:40

标签: c# windows windows-phone-8.1 windows-phone 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"如你所见,然后从Application Uri获取文件" pictureFile"。然后通过使用打开源图片作为Stream读取,在此使用另一个using语句打开库中新创建的图片文件进行写入,在其中打开的文件数据被复制到目标文件数据并保存。

这个工作,文件在库中,但创建时间来自源图片。我如何在运行时添加新的创建时间?!

1 个答案:

答案 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();

这将覆盖现有数据,这就是我要搜索的内容。