我有一张尺寸为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中找到有关带像素的字节数组的内容。
答案 0 :(得分:3)
通常位图数据被写为扫描线,即。一次一个水平像素行。然后每行跟随下一行,在图像数据中垂直向上或向下移动。
每条扫描线都保持宽度像素,但为了有效访问,每条扫描线的末端通常都有填充,以使数据进入处理器友好的内存对齐。但是,32位数据通常不需要这个填充,因此下一个扫描行将紧跟在下一个字节中。
因此,对于您描述的条件,每4个字节最有可能是alpha。 alpha值为0表示完全透明。