c# - 如何在 Windows Store 应用程序中编辑和保存照片?

标签 c# windows-8 windows-store-apps

我制作了一些编辑照片并将其保存在其他位置的应用程序。所以我找到一个 question其中显示了如何在 Windows 应用商店应用程序中调整照片大小。然后我在我的程序中实现它:

private async void ResizeButton_Click(object sender, RoutedEventArgs e)
{
    uint width, height;
    if (uint.TryParse(WidthTextBox.Text, out width) && uint.TryParse(HeightTextBox.Text, out height) 
        && _folderWithPhoto != null && _targetFolder != null)
        //_folderWithPhoto and _targetFolder are StorageFolder values get from FolderPicker
    {
        var files = await _folderWithPhoto.GetFilesAsync();
        foreach (StorageFile item in files)
        {
            if (item.ContentType.Contains("image"))
            {
                StorageFile targetFile = await item.CopyAsync(_targetFolder, item.Name, NameCollisionOption.GenerateUniqueName);

                var fileStream = await targetFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
                BitmapDecoder decoder = await BitmapDecoder.CreateAsync(fileStream);

                InMemoryRandomAccessStream ras = new InMemoryRandomAccessStream();
                BitmapEncoder enc = await BitmapEncoder.CreateForTranscodingAsync(ras, decoder);

                enc.BitmapTransform.ScaledHeight = height;
                enc.BitmapTransform.ScaledWidth = width;

                await enc.FlushAsync();
            }
        }
    }
}

问题

此代码的结果是保存在 _targetFolder 目录中的同一张照片。所以我不知道如何修复它。

如有任何帮助,我们将不胜感激。

最佳答案

我不确定 Mateusz 是否会在你的 foreach 循环中执行类似这样的操作

ras.Seek(0);
fileStream.Seek(0);
fileStream.Size = 0;
await RandomAccessStream.CopyAsync(ras, fileStream);

fileStream.Dispose();
ras.Dispose();

关于c# - 如何在 Windows Store 应用程序中编辑和保存照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14082901/

相关文章:

c# - XML 错误 : data at root level is invalid

java - 安装 Android SDK 发现 JDK 从 Eclipse 中删除了 javaw.exe

XAML 数据网格数据模板

javascript - 从 WinJS.Binding.List 中删除项目

c# - TFS checkin 政策 - 最佳实践

c# - 在 C# 4.0 中使用依赖注入(inject)时处理异常

c# - 每组 LINQ 的最大值

windows-8 - 在 Windows 8/WinRT 中实现 DragStarted DragDelta 事件

visual-studio - winRT 异常堆栈中的行号

javascript - 从 WinJS 中的 AppFolder 打开 Iframe 中的本地 HTML 文件