[英]Lumia Imaging SDK JpegRenderer.RenderAsync InvalidOperationException
我正在使用Lumia Imaging SDK ver 2.0裁剪Windows Phone 8.1 RT應用程序中的圖像。 該代碼可以正常工作,但JpegRenderer.RenderAsync()
有時會拋出InvalidOperationException, Operation is not valid due to the current state of the object.
每次使用一些圖像都會重現該問題,並使應用程序崩潰。 我使用以下代碼進行裁剪:
using (StorageFileImageSource inputImageSource = new StorageFileImageSource(inputImageFile))
{
using (FilterEffect filterEffect = new FilterEffect(inputImageSource))
{
// Create cropping filter.
List<IFilter> filters = new List<IFilter>();
CropFilter cropFilter = new CropFilter(croppedImageSize);
filters.Add(cropFilter);
// Add filters to effects.
filterEffect.Filters = filters;
// Create renderer with above filters and render new image.
using (JpegRenderer renderer = new JpegRenderer(filterEffect))
{
IBuffer croppedImage = await renderer.RenderAsync();
return croppedImage.ToArray();
}
}
}
我提到了此資源 ,它說JpegRenderer.RenderAsync()
在呈現過程中,當過濾器屬性值更改時,拋出InvalidOperationException
。 設置屬性后,我不會更改其值,那么為什么會引發異常?
我找出了問題所在,正如David所說,我傳遞了錯誤的尺寸,該尺寸大於圖像的尺寸。 我正在使用BitmapDecoder.PixelHeight
和BitmapDecoder.PixelWidth
計算尺寸。
但是,在EXIF數據中具有方向數據的某些圖像中, BitmapDecoder.PixelHeight
給出了圖像的寬度,反之亦然。 為此,我必須使用BitmapDecoder.OrientedPixelHeight
和BitmapDecoder.OrientedPixelWidth
來獲取圖像的實際高度和寬度,以適應圖像的方向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.