在以下特定情况下,我很难将 lumia 成像 SDK 2.0 代码转换为 SDK3.0。我曾经在 Windows phone 8.1 RT 应用程序中使用以下代码来增加/降低 JPG 文件的图像质量:
using (StreamImageSource source = new StreamImageSource(fileStream.AsStreamForRead()))
{
IFilterEffect effect = new FilterEffect(source);
using (JpegRenderer renderer = new JpegRenderer(effect))
{
renderer.Quality = App.COMPRESSION_RATIO / 100.0; // higher value means better quality
compressedImageBytes = await renderer.RenderAsync();
}
}
现在由于在 SDK 3.0 中 FilterEffect 类已被 EffectList() 替换,我将代码更改为
using (BufferProviderImageSource source = new BufferProviderImageSource(fileStream.AsBufferProvider()))
{
using (JpegRenderer renderer = new JpegRenderer())
{
IImageProvider2 source1 = new EffectList() { Source = source };
renderer.Source = source1;
renderer.Quality = App.COMPRESSION_RATIO / 100.0;
try
{
var img = await renderer.RenderAsync();
}
catch (Exception ex)
{
;
}
}
}
我收到 InvalidCastException 异常。我尝试了几种组合,但没有运气。