2016-01-12 40 views
2

在我的UWP Windows 10 Mobile應用程序中,我嘗試訪問和操作PixelBuffer中給定WriteableBitmap的單個像素的透明度。我遇到的問題是,BitmapDecoder.CreateAsync()拋出從Windows Phone的WriteableBitmap創建BitmapDecoder的異常UWP

「組件無法找到(從HRESULT異常: 0x88982F50)。」

我花了太多的時間搜索,重構和調試這無濟於事;任何提示,方向或任何形式的幫助將不勝感激。

 // img is a WriteableBitmap that contains an image 
     var stream = img.PixelBuffer.AsStream().AsRandomAccessStream(); 
     BitmapDecoder decoder = null; 

     try 
     { 
      decoder = await BitmapDecoder.CreateAsync(stream); 
     } 
     catch(Exception e) 
     { 
      // BOOM: The component cannot be found. (Exception from HRESULT: 0x88982F50) 
     } 
     // Scale image to appropriate size 
     BitmapTransform transform = new BitmapTransform() 
     { 
      ScaledWidth = Convert.ToUInt32(img.PixelWidth), 
      ScaledHeight = Convert.ToUInt32(img.PixelHeight) 

     }; 
     PixelDataProvider pixelData = await decoder.GetPixelDataAsync(
      BitmapPixelFormat.Bgra8, // WriteableBitmap uses BGRA format 
      BitmapAlphaMode.Straight, 
      transform, 
      ExifOrientationMode.IgnoreExifOrientation, // This sample ignores Exif orientation 
      ColorManagementMode.DoNotColorManage 
     ); 

     // An array containing the decoded image data, which could be modified before being displayed 
     byte[] pixels = pixelData.DetachPixelData(); 

UPDATE:如果這有助於引發一些想法,我發現,如果我使用重載CreateAsync構造函數與流提供一個編解碼器,它拋出一個不同的異常:

指定強制轉換無效。

  Guid BitmapEncoderGuid = BitmapEncoder.PngEncoderId; 
      decoder = await BitmapDecoder.CreateAsync(BitmapEncoderGuid, stream); 

它給出了同樣的異常無論哪種編解碼器我供應(如PNG,JPEG,GIF,TIFF,BMP,JPEGXR)

回答

1

我不明白,你爲什麼要使用BitmapDecoderWriteableBitmap中的像素數據不以任何方式進行編碼。如果您以特定壓縮格式從文件流加載圖像,則需要BitmapDecoder - 這需要您使用正確的編解碼器。

可以只是直接從流中讀取的像素數據:

byte[] pixels; 
using (var stream = img.PixelBuffer.AsStream()) 
{ 
    pixels = new byte[(uint)stream.Length]; 
    await stream.ReadAsync(pixels, 0, pixels.Length); 
} 

這會給你一個byte陣列包含用於每個像素的4個字節,對應於它們的R,G,B和A分量。

+0

我對圖像處理沒有太多的工作,我的困惑是,有問題的圖像是由第三方庫(B/W條碼圖像)渲染的,它不是來自文件,所以我不知道它是什麼是。這應該工作,雖然... –

相關問題