Foxtable(狐表)用户栏目专家坐堂 → [讨论] FB如何让头像变灰?


  共有7342人关注过本帖树形打印复制链接

主题:[讨论] FB如何让头像变灰?

帅哥哟,离线,有人找我吗?
don
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
[讨论] FB如何让头像变灰?  发帖心情 Post By:2013/5/7 11:12:00 [显示全部帖子]

百度来的头像变灰的方法,请高手转为FB可用的代码:

一.
procedure Gray(bmp: TBitmap);
var
  p: PByteArray;
  w: Integer;
  i, j: Integer;
begin
  bmp.pixelformat := pf24bit;
  for i := 0 to bmp.height - 1 do
  begin
    p := bmp.scanline[i];
    j := 0;
    while j < (bmp.width-1) * 3 do
    begin
      w :=(p[j] * 28 + p[j+1] * 151 + p[j+2]*77);
      w := w shr 8;
      p[j] := byte(w);
      p[j+1] := byte(w);
      p[j+2] := byte(w);
      inc(j, 3)
    end;
  end;
end;


二. 微软做好的,GDI+绘制代码:

Graphics graphics(hdc);
            Image myImage(L"Image.jpg");
            RectF source(0.0f, 0.0f, 330.0f, 300.0f);
            RectF destination(20.0f, 20.0f, 330.0f, 300.0f);
 
            DrawImage(graphics, &myImage, destination, source, UnitPixel, NULL); // 绘制原始图像
             
            RectF destination2(420.0f, 20.0f, 330.0f, 300.0f);
 
#define GRAY        32/256.0f    /* gray/full, 0 - 256 : black to white, 16 - 64 is recommended */
#define GRAY        0.125f        /* 0.000 - 1.000 : black to white, 0.062 - 0.250 is recommended */
#define FULL        1.000f
#define ZERO        0.000f
 
                        // 自由转换
            ColorMatrix matrix = {
                GRAY, GRAY, GRAY, FULL, ZERO, 
                GRAY, GRAY, GRAY, FULL, ZERO, 
                GRAY, GRAY, GRAY, FULL, ZERO, 
                GRAY, GRAY, GRAY, FULL, ZERO, 
                ZERO, ZERO, ZERO, ZERO, FULL, 
            };
 
            ImageAttributes attributes;
            attributes.SetColorMatrix(&matrix);
            DrawImage(graphics, &myImage, destination2, source, UnitPixel, &attributes); // 绘制转换图像



DrawImage 是自定义函数


C/C++ code


void DrawImage(Graphics& graphics, Image* image, RectF& destination, RectF& source, Unit unit, ImageAttributes* attributes)
{
    graphics.DrawImage(image, destination, source.X, source.Y, source.Width, source.Height, unit, attributes);
}



 回到顶部
帅哥哟,离线,有人找我吗?
don
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/7 12:29:00 [显示全部帖子]

高手动手了,学习!

 回到顶部
帅哥哟,离线,有人找我吗?
don
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/7 13:28:00 [显示全部帖子]

同问,不知如何设置保存位置 ,

Dim SImage As Image = Image.FromFile("D:\8d00.jpg")
Dim bcmage As Image = Image.SaveFile("D:\800.jpg")   ' Image.SaveFile报错


 回到顶部
帅哥哟,离线,有人找我吗?
don
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/7 13:34:00 [显示全部帖子]

这个一样报错.

 回到顶部
帅哥哟,离线,有人找我吗?
don
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/7 14:18:00 [显示全部帖子]

以下是引用Bin在2013-5-7 14:15:00的发言:

参考我的代码,经常测试的.没有问题.
您那个OK!没问题


 回到顶部