我正在尝试将图像文件复制到本地存储并调整其大小(为了在动态磁贴中显示它)。我主要只是在这里修修补补,这是我的第一个 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 文件。但是,如果我在函数链中插入一个调用来读取已保存到本地存储的文件,那么我会看到它没有调整大小。因此,动态磁贴更新自然会忽略它,因为它太大了。
我是否错过了调整图像大小的步骤?或者也许有更简单的方法来实现这一点?