4

写真を編集して別の場所に保存するアプリケーションを作成します。そこで、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カタログに保存されているのと同じ写真です。だから私はそれを修正する方法がわかりません。

どんな助けでもいただければ幸いです。

4

1 に答える 1

1

Mateusz は、foreach ループ内でこのような処理を行うかどうかはわかりません

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

fileStream.Dispose();
ras.Dispose();
于 2012-12-29T17:12:53.877 に答える