وبلاگ شخصی حامد شیرزاد
وبلاگ شخصی حامد شیرزاد
صفحات وبلاگ
نویسنده: حامد شیرزاد - ۱۳٩٠/٧/۱٢

IRatio and CRatio adjust the intensity and contrast.

  1. type
  2. TRGB = record
  3. B : byte;
  4. G : byte;
  5. R : byte;
  6. end;
  7. TRGBArray = array[0..32767] of TRGB;
  8. PRGBArray = ^TRGBArray;
  9. // convert a colour bitmap to greyscale
  10. procedure GreyscaleBitmap(ABitmap : TBitmap ; IRatio, CRatio : Single);
  11. Var
  12. LRow : PRGBArray;
  13. Lx, Ly, LI, LRowBytes : integer;
  14. LIF : Single;
  15. begin
  16. LRow := ABitmap.Scanline[0];
  17. LRowBytes := Integer(ABitmap.Scanline[1]) - Integer(LRow);
  18. for Ly := 0 to ABitmap.Height - 1 do begin
  19. for Lx := 0 to ABitmap.Width - 1 do begin
  20. LIF := 0.3*LRow[Lx].R + 0.59*LRow[Lx].G + 0.11*LRow[Lx].B;
  21. LIF := 128 + CRatio*(LIF - 128);
  22. LI := Round(LIF * IRatio);
  23. if LI > 255 then LI := 255;
  24. LRow[Lx].B := LI;
  25. LRow[Lx].G := LI;
  26. LRow[Lx].R := LI;
  27. end;
  28. Inc(Integer(LRow), LRowBytes);
  29. end;
  30. end;
نویسندگان وبلاگ:
مطالب اخیر:
کدهای اضافی کاربر :