簡體   English   中英

Lumia Imaging SDK JpegRenderer.RenderAsync InvalidOperationException

[英]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.PixelHeightBitmapDecoder.PixelWidth計算尺寸。

但是,在EXIF數據中具有方向數據的某些圖像中, BitmapDecoder.PixelHeight給出了圖像的寬度,反之亦然。 為此,我必須使用BitmapDecoder.OrientedPixelHeightBitmapDecoder.OrientedPixelWidth來獲取圖像的實際高度和寬度,以適應圖像的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM