bit-manipulation - 基于解码 RLE(按位)函数对编码函数进行编程
问题描述
目前我只有解码过程,EncodedRle是带有编码图像字节的字节数组,pixel是在解码图像上绘制的像素位置,col是解码像素颜色,0 或 255,matSpan是图像像素跨度(字节数组)
解码功能:
int pixel = 0;
foreach (var run in EncodedRle)
{
byte col = (byte) ((run & 0x01) * 255);
var numPixelsInRun =
(((run & 128) > 0 ? 1 : 0) |
((run & 64) > 0 ? 2 : 0) |
((run & 32) > 0 ? 4 : 0) |
((run & 16) > 0 ? 8 : 0) |
((run & 8) > 0 ? 16 : 0) |
((run & 4) > 0 ? 32 : 0) |
((run & 2) > 0 ? 64 : 0)) + 1;
for (; numPixelsInRun > 0; numPixelsInRun--)
{
matSpan[pixel++] = col;
}
}
如何编写编码函数?我知道我需要限制步幅,因此将同一行中的相等像素相加发现一个不同的值并限制为每字节最大 128?但我不擅长按位,找不到正确的方法。和提示?
解决方案
推荐阅读
- c# - Fedex API - 不同类型包裹的请求率
- c++ - OpenGL/Glut: Making the camera rotate around X axis with arrow keys?
- javascript - 如何获取单元格/范围中特定数量字符的值()
- apache-nifi - 如何从 NiFi Registry 中的 git 恢复流?
- c++ - 在 MacOS 上使用 gcc-8 而不是 clang 编译 Qt5
- javascript - 通过列表元素JS进行搜索和过滤
- webview - 为什么在 WebView 上的 url 更改后 initState 不起作用?
- julia - 旋转矩阵 +/- 弧度 / 度
- javascript - Sequelize 关联函数没有效果
- python - 如何检测图中的峰值数量?