#1948. 图像处理像素处理
图像处理像素处理
问题描述
在一个图像处理程序中,需要对图像的像素数据进行高效压缩和存储。图像中的每个像素由一个 32 位无符号整数表示,其格式如下:
- 前 5 位(
r1
):表示红色通道分量的高 5 位数据。 - 接下来 6 位(
g1
):表示绿色通道分量的高 6 位数据。 - 再接下来 5 位(
b1
):表示蓝色通道分量的高 5 位数据。 - 接下来 1 位(
alphaFlag
):用于标记该像素是否具有透明度信息,1 表示有透明度,0 表示无透明度。 - 如果
alphaFlag
为 1,则接下来 5 位(alpha
):表示透明度通道的高 5 位数据;如果alphaFlag
为 0,则这 5 位(reserved
)保留未使用,固定为 0。 - 最后 10 位(
r2g2b2
):分别表示红色、绿色、蓝色通道分量的低 2 位数据,按顺序排列,即低 2 位的红色数据、低 2 位的绿色数据、低 2 位的蓝色数据。
格式
输入
1 4278190335
分别表示:1压缩数据,第二位表示像素数据,调用函数compressPixels进行压缩处理
或
0 0 7 30 0 0 0 分別表示:0解压缩数据,第二位开始分别表示r1,g1,b1,alphaFlag,alpha/reserved,r2g2b2
输出
输出压缩后的各个数据 解压缩就输出像素数据
样例
1 4278190335
31 56 0 0 0 255
0 0 7 30 0 0 0
1865983
提示
要求实现以下功能:
- 编写一个函数
compressPixels
,接收一个无符号 32 位整数(表示原始像素数据),将像素按照上述压缩格式转换并返回。 - 编写一个函数
decompressPixels
,接收压缩后的数据作为参数,将其还原为原始的 32 位无符号整数像素数据并返回,像素数据有R1 R2 G1 G2 B1 B2 alpha alpha2组合在一起的值