画像ファイルをローカル ストレージにコピーしてサイズを変更しようとしています (ライブ タイルに表示するため)。これは私の最初の Windows ストア アプリであり、すべてです。これまでのところ、これは私が持っているものです:
var fileStream = null;
currentPhoto.copyAsync(Windows.Storage.ApplicationData.current.localFolder, currentPhoto.name)
.then(function (file) {
return file.openAsync(Windows.Storage.FileAccessMode.readWrite);
})
.then(function (stream) {
return Windows.Graphics.Imaging.BitmapDecoder.createAsync(stream);
})
.then(function (decoder) {
fileStream = new Windows.Storage.Streams.InMemoryRandomAccessStream();
return Windows.Graphics.Imaging.BitmapEncoder.createForTranscodingAsync(fileStream, decoder);
})
.then(function (encoder) {
encoder.bitmapTransform.scaledWidth = 100;
encoder.bitmapTransform.scaledHeight = 100;
return encoder.flushAsync();
})
.then(function () {
fileStream.close();
})
.done(function () {
// do tile update
});
この部分が動作するようになったら、適切なアスペクト比を計算します。今のところ、テストには 100x100 で問題ありません。デバッグ中に、エンコーダーが JPG ファイルであることを適切に検出していることに気付きました。ただし、ローカル ストレージに保存されたファイルを読み取る呼び出しを関数チェーンに挿入すると、サイズが変更されていないことがわかります。したがって、当然、ライブ タイルの更新では、大きすぎるため無視されます。
画像のサイズを変更しようとして手順を間違えましたか? それとも、これを達成するためのより簡単な方法がありますか?