1

我使用 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”的新图片,然后从应用程序 Uri 中获取该文件,即“pictureFile”。然后通过 using 打开源图片以读取为流,在此使用另一个 using 语句打开画廊中新创建的图片文件进行写入,其中打开的文件数据被复制到目标文件数据并保存。

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

4

1 回答 1

1

这是解决方案:

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

这将覆盖现有数据,这就是我正在寻找的。

于 2015-08-25T20:13:27.663 回答