我的Email是[email protected]
最好是资料,谢谢各位大虾!

解决方案 »

  1.   

    ColorToIdent 函数 获得一个颜色的名字 
    ColorToRGB 函数 把TColor值转换成RGB 
    ColorToString 函数 把TColor值转换成字符串 
    CopyPalette 函数 创建一个新的调色板对象以匹配一个已经存在的调色板 
    CreateGrayMappedBmp 函数 在Bitmap控件中创建一个系统灰度颜色 
    CreateGrayMappedRes 函数 在Bitmap资源中创建一个系统灰度颜色 
    CreateMappedBmp 函数 在Bitmap中改变颜色表 
    CreateMappedRes 函数 在Bitmap资源中改变颜色表 
    DDBsOnly 变量 判断位图是不是设备相关位图 
    GetCharSetvalues 过程 设置回调函数(获得字符集) 
    GetColorvalues 过程 设置回调函数(获得颜色) 
    GetDefFontCharset 函数 获得默认的系统字体字符集 
    GetDIB 函数 把设备有关位图转换成设备无关位图 
    GetDIBSizes 过程 返回设备无关位图的大小 
    GraphicExtension 函数 获得默认图象对象的扩展文件名 
    GraphicFileMask 函数 同上(*.bmp等) 
    GraphicFilter 函数 返回文件过滤器 
    IdentToCharset 函数 把字符集常数的名字翻译成相应的字符集 
    IdentToColor 函数 把颜色常数的名字翻译成相应的颜色 
    StringToColor 函数 把字符串翻译成颜色 
    SystemPalette16 变量 包含16VGA系统颜色 
      

  2.   

    RGB三个分量越大,亮度就越高
    对比度没有直接的关系,对比度是明暗的对比,你将对比度跳高的话,也就是说亮的越亮,暗的越暗
    颜色的分布趋向两端,反之就去向中间。我记得应该是这样吧
    这些操作都是通过改变RGB三个分量来实现的
      

  3.   

    你可以将RGB空间转换为HSL空间,里面就是由亮度,饱和度那些组成的。具体的转换方法是有公式的,你可以去google一下。或者你去看看《数字图像处理》(第二版)(电子工业出版社)。
      

  4.   

    那对比度是怎么实现的呢?也就是说对比度与RGB(HSL)之间是否有公式。
    或者它的算法是怎么样的呢?
      

  5.   

    Procedure Lightness(Var clip: tbitmap; Amount: Integer); //亮度
    Var
      p0: pbytearray;
      r, g, b, p, x, y: Integer;
    Begin
      For y := 0 To clip.Height - 1 Do Begin
          p0 := clip.scanline[y];
          For x := 0 To clip.Width - 1 Do
            Begin
              r := p0[x * 3];
              g := p0[x * 3 + 1];
              b := p0[x * 3 + 2];
              p0[x * 3] := IntToByte(r + ((255 - r) * Amount) Div 255);
              p0[x * 3 + 1] := IntToByte(g + ((255 - g) * Amount) Div 255);
              p0[x * 3 + 2] := IntToByte(b + ((255 - b) * Amount) Div 255);
            End;
        End;
    End;Procedure Contrast(Var clip: tbitmap; Amount: Integer); //对比度
    Var
      p0: pbytearray;
      rg, gg, bg, r, g, b, x, y: Integer;
    Begin
      For y := 0 To clip.Height - 1 Do
        Begin
          p0 := clip.scanline[y];
          For x := 0 To clip.Width - 1 Do
            Begin
              r := p0[x * 3];
              g := p0[x * 3 + 1];
              b := p0[x * 3 + 2];
              rg := (Abs(127 - r) * Amount) Div 255;
              gg := (Abs(127 - g) * Amount) Div 255;
              bg := (Abs(127 - b) * Amount) Div 255;
              If r > 127 Then r := r + rg Else r := r - rg;
              If g > 127 Then g := g + gg Else g := g - gg;
              If b > 127 Then b := b + bg Else b := b - bg;
              p0[x * 3] := IntToByte(r);
              p0[x * 3 + 1] := IntToByte(g);
              p0[x * 3 + 2] := IntToByte(b);
            End;
        End;
    End;
      

  6.   

    //示例
    procedure TForm1.Button2Click(Sender: TObject);
    var
      a: tbitmap;
    begin
      a := tbitmap.Create;
      a.LoadFromFile(MyPath + 'a.bmp');
      a.PixelFormat := pf24bit;
      Lightness(a, 100);//亮度
      Form1.Canvas.Draw(0, 0, a); // neues Bild ausgeben / Output new image //
      InvalidateRect(Form1.Handle, nil, False);
      RedrawWindow(Form1.Handle, nil, 0, RDW_UPDATENOW);end;
      

  7.   

    象photoshape一样,亮度和对比度一起调,那怎么实现?
    谢谢。
    to:xzhifei(饭桶超人(抵制日货)) :
    我想实现photoshape那种效果,怎么实现?
      

  8.   

    我不知道你的项目要求是什么。不过推荐你用ImageEn控件,这个控件其中提供了一个dialog,可以很方便的调节图片的很多参数,还有某些特效。
      

  9.   

    象photoshape一样,亮度和对比度一起调,那怎么实现?
    谢谢。你把参数统一传个两个函数Contrast,Lightness 就可以了。