我想编个程序实现位图亮度的调整。不知道怎样实现,有没有现成的事例?
谢谢。

解决方案 »

  1.   

    将RGB转换成YUV,修改Y,然后将修改后的Y与原来的UV重新转换回RGB,即可。
      

  2.   

    得到位图数据,将每一位的数据都乘一个大于1的系数不就得了,当然需要对RGB各色分别操作,免得造成色彩的改变。需要例子可以留个邮箱号,我给你做一个。
      

  3.   

    我的email: [email protected]
    非常感谢
      

  4.   

    也给我一个吧:)
    [email protected]
      

  5.   

    转换公式:R'=R*亮度系数
    G'=R*亮度系数
    B'=R*亮度系数
    (亮度系数为一float,>1就是调亮)
      

  6.   

    DIB处理原理(当时是为了VB写的):
    http://www.csdn.net/develop/read_article.asp?id=20442
      

  7.   

    R'=R*亮度系数
    G'=R*亮度系数
    B'=R*亮度系数
    这种方法是会有问题的,这样的话黑色像素永远不会变亮
    我的程序收到了吧我的方法:
    R'=255-(255-R)*亮度系数
    G'=255-(255-G)*亮度系数
    B'=255-(255-B)*亮度系数
    //系数小于1时亮度增加,大于1时亮度变暗
      

  8.   

    void CDib::ModifyBright(int nDelta, BYTE *r, BYTE *g, BYTE* b)
    {
    //r,g,b为被修改的值
    //nDelta为调整量
    int R = *r + nDelta;
    int G = *g + nDelta;
    int B = *b + nDelta;*r = (BYTE)Limit(R, 0, 255);
    *g = (BYTE)Limit(G, 0, 255);
    *b = (BYTE)Limit(B, 0, 255);
    }int CDib::Limit(int x, int min, int max)
    {
    if(x<min)
      return min;
    else
      if (x>max)
        return max;
      else
        return x;
    }