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