|
Вопрос # 638/ вопрос открыт / |
|
Дорогие эксперты!Как у рисунка можно изменить яркость,контрастность и насышенность?
 |
Вопрос задал: Аксион (статус: 4-ый класс)
Вопрос отправлен: 18 июня 2007, 12:09
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Скачай себе базу знаний Delphi World. Там много интересного. Вот, к примеру, я там нашёл такую вещь (см. приложение):
Приложение: Переключить в обычный режим- { **** UBPFD *********** by delphibase.endimus.com ****
-
-
-
-
-
-
-
-
-
-
- ***************************************************** }
-
- procedure Contrast(Bitmap: TBitmap; Value: Integer; Local: Boolean);
-
- function BLimit(B: Integer): Byte;
- begin
- if B < 0 then
- Result := 0
- else if B > 255 then
- Result := 255
- else
- Result := B;
- end;
-
- var
- Dest: pRGBTriple;
- x, y, mr, mg, mb,
- W, H, tr, tg, tb: Integer;
- vd: Double;
-
- begin
- if Value = 0 then
- Exit;
- W := Bitmap.Width - 1;
- H := Bitmap.Height - 1;
- if Local then
- begin
- mR := 128;
- mG := 128;
- mB := 128;
- end
- else
- begin
- tr := 0;
- tg := 0;
- tb := 0;
- for y := 0 to H do
- begin
- Dest := Bitmap.ScanLine[y];
- for x := 0 to W do
- begin
- with Dest^ do
- begin
- Inc(tb, rgbtBlue);
- Inc(tg, rgbtGreen);
- Inc(tr, rgbtRed);
- end;
- Inc(Dest);
- end;
- end;
- mB := Trunc(tb / (W * H));
- mG := Trunc(tg / (W * H));
- mR := Trunc(tr / (W * H));
- end;
- if Value > 0 then
- vd := 1 + (Value / 10)
- else
- vd := 1 - (Sqrt(-Value) / 10);
- for y := 0 to H do
- begin
- Dest := Bitmap.ScanLine[y];
- for x := 0 to W do
- begin
- with Dest^ do
- begin
- rgbtBlue := BLimit(mB + Trunc((rgbtBlue - mB) * vd));
- rgbtGreen := BLimit(mG + Trunc((rgbtGreen - mG) * vd));
- rgbtRed := BLimit(mR + Trunc((rgbtRed - mR) * vd));
- end;
- Inc(Dest);
- end;
- end;
- end;
-
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 19 июня 2007, 08:09
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|