У меня трудное время конвертирования кода SDK 2.0 с изображением люмисии в SDK3.0 ниже конкретного случая. Я использовал для увеличения/уменьшения качества изображения JPG-файл с помощью ниже кода в Windows Phone 8.1 RT приложения:Не удается порт Lumia imaging SDK2.0 to SDK 3.0 (UWP)
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();
}
}
Теперь, так как FilterEffect класс был заменен в SDK 3.0 с 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. Я попробовал несколько комбинаций, но не повезло.
Где вы получаете недопустимое исключение произнесения? Когда вы предоставляете, то есть называть renderAsync()? Или же произойдет исключение даже раньше? –
На самом деле я просто попытался рендеринга с пустым списком и работал без проблема, поэтому я беру это обратно. Возможно, это что-то с вашим потоком? Если вы просто создаете источник ColorImageSource в качестве источника, будет ли он работать для вас? –