簡體   English   中英

從ByteArray獲取像素顏色

[英]Get pixel color from ByteArray

我有一個尺寸為160x175像素的圖像。 我用以下代碼將其加載到字節數組中:

var file = await StorageFile.GetFileFromApplicationUriAsync(
    new Uri("ms-appx:///Assets/Image.png"));

using (var stream = await file.OpenAsync(FileAccessMode.Read))
{
    var decoder = await BitmapDecoder.CreateAsync(stream);

    var myTransform = new BitmapTransform
    {
        ScaledHeight = (uint)pixelHeight,
        ScaledWidth = (uint)pixelWidth
    };

    var pixels = await decoder.GetPixelDataAsync(
        BitmapPixelFormat.Rgba8,
        BitmapAlphaMode.Straight,
        myTransform,
        ExifOrientationMode.IgnoreExifOrientation,
        ColorManagementMode.DoNotColorManage);

    var bytes = pixels.DetachPixelData();
}

現在,我想檢查每個像素是否透明。 我的字節數組的長度為112000。我認為160px * 175px * 4(RGBA)。 那么,如果字節數組中的每個第4個字節都是像素的透明度字節,並且當其內容為255時,它就是透明度,是否正確?

以及像素如何在字節數組中排序? 水平還是垂直?

我在MSDN中找不到有關像素像素字節數組的內容。

通常,位圖數據被寫為掃描線,即一次像素水平行。 然后,每行之后是下一行,以在圖像數據中垂直向上或向下移動。

每條掃描線保持Width像素,但是為了有效訪問,通常在每條掃描線的末尾都填充以將數據帶入處理器友好的內存對齊方式。 但是,32位數據通常不需要此填充,因此下一個掃描線將立即在下一個字節中跟隨。

因此,對於您描述的條件,很有可能每個第4個字節都是alpha。 alpha值0表示完全透明。

暫無
暫無

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

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