mrp-bmp565
Version:
用于处理mrp中的bmp565格式的图片,将rgb565格式处理成常规的24位颜色位图。
38 lines (37 loc) • 1.39 kB
JavaScript
;
/*
* rrrrrggg gggbbbbb => rrrrrRRRggggggGGbbbbbBBB
* RRR = R5[2:0]
* GG = G6[1:0]
* BBB = B5[2:0]
* */
Object.defineProperty(exports, "__esModule", { value: true });
/**
* 将bmp565的图片数据转换成24位rgb颜色。
* @param src 一个565颜色的内容(注意:只是内容而已,也就是说一开始就是颜色列表)
*/
function decode(src) {
//定义一个buffer来存放颜色(因为565用两位表示一个颜色,所以颜色数=长度/2)(>>1表示除以2)
var colors = Buffer.alloc((src.length >> 1) * 3);
//遍历src,取得每个像素,并得到结果
for (var i = 0; i < src.length; i += 2) {
//取得565像素,共16位
var color = src.readUInt16LE(i);
//红色处理
var r = (color >> 11); //得到r5
r = (r << 3) | (r & 7); //将r5左移3位,并用r5的后3位补齐
//绿色处理
var g = (color >> 5) & 63; //得到g6
g = (g << 2) | (g & 3); //将g6的左移2位,并用g6的后2位补齐
//蓝色处理
var b = (color & 31); //得到b5,直接取后5位即可
b = (b << 3) | (b & 7); //同r5
//保存颜色
var offset = (i >> 1) * 3;
colors.writeUInt8(r, offset);
colors.writeUInt8(g, offset + 1);
colors.writeUInt8(b, offset + 2);
}
return colors;
}
exports.decode = decode;