在点a到b之间线性增加RGB565值

时间:2017-07-23 13:29:06

标签: c++ rgb

我有一个16个单元格的数组,我知道位置0(a)和位置15(b)。

我希望线性增加a到b点之间的RGB值。

到目前为止,这是我的函数,它获取十六进制并将其转换为RGB,但我不确定如何扩展它以执行上述操作。

void rgb(int hexValue)
{
    unsigned r = (hexValue & 0xF800) >> 11;
    unsigned g = (hexValue & 0x07E0) >> 5;
    unsigned b = hexValue & 0x001F;

    r = (r * 255) / 31;
    g = (g * 255) / 63;
    b = (b * 255) / 31;

    printf("r: %d, g: %d, b: %d\n", r, g, b);
}

非常感谢提前。

编辑: 根据我的评论,这是一个试图解决这个问题的示例代码。

int ra = 0;
int ga = 0;
int ba = 0;

int rb = 255;
int gb = 255;
int bb = 255;

int r = 0;
int g = 0;
int b = 0;

for(int i = 0; i < W; i++)
{
    r = (ra*((W-1)-i) + rb*i)/(W-1);
    g = (ga*((W-1)-i) + gb*i)/(W-1);
    b = (ga*((W-1)-i) + bb*i)/(W-1);

    printf("loop is: %d -- r: %d, g: %d, b: %d\n", i, r, g, b);
}

这个逻辑是否正确?如果是这样,那么我需要获得ra,ga,ba并将它们转换回十六进制。

我的输出是:

loop is: 0 -- r: 0, g: 0, b: 0
loop is: 1 -- r: 17, g: 17, b: 17
loop is: 2 -- r: 34, g: 34, b: 34
loop is: 3 -- r: 51, g: 51, b: 51
loop is: 4 -- r: 68, g: 68, b: 68
loop is: 5 -- r: 85, g: 85, b: 85
loop is: 6 -- r: 102, g: 102, b: 102
loop is: 7 -- r: 119, g: 119, b: 119
loop is: 8 -- r: 136, g: 136, b: 136
loop is: 9 -- r: 153, g: 153, b: 153
loop is: 10 -- r: 170, g: 170, b: 170
loop is: 11 -- r: 187, g: 187, b: 187
loop is: 12 -- r: 204, g: 204, b: 204
loop is: 13 -- r: 221, g: 221, b: 221
loop is: 14 -- r: 238, g: 238, b: 238
loop is: 15 -- r: 255, g: 255, b: 255

1 个答案:

答案 0 :(得分:0)

这是一个解决方案:

        var uploadDir = './uploads/databses/temp/'; 

        var form = new formidable.IncomingForm({ 
        uploadDir=uploadDir,    
        keepExtensions: true
        });
        form.on('progress', function(bytesReceived, bytesExpected) {
        console.log(100 * bytesReceived / bytesExpected + '%');
        });
        form.parse(req)     
        .on('field', function(name, fields) {
        var body = JSON.parse(fields);

        uploadDir='./uploads/databses/'+body.nameOfFolder+'/';
        form.uploadDir=uploadDir; 
        }).on('file', function(name, files) {
        //moving temp to new folder
        mv('./uploads/databses/temp',  form.uploadDir, {mkdirp: true}, 
        function(err) {

        });
         res.end(util.inspect({
        files: files
        }));
        })
        .on('error', function(err) {
        next(err);
        })
        .on('end', function() {
        res.end();
        });
相关问题