01.06.2011, 21:03
|
|
Активный
|
|
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
|
|
Заменил чтение блоком. Скорость возросла
Просто подумал как так цветное быстрее рисуется
Код:
procedure TForm1.Button2Click(Sender: TObject);
Type
TRGB = Record
B,G,R: Byte;
end;
PRGBLine = ^TRGBLine;
TRGBLine = Array [0..65535] of TRGB;
Var
F: TFileStream;
Bmp: TBitmap;
Line: PRGBLine;
R, j, i: Integer;
C1, C2, C3, Y: Byte;
begin
if OpenDialog1.Execute Then
F:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead) Else Exit;
Bmp:= TBitmap.Create;
Bmp.PixelFormat:= pf24bit;
if (F.Size Mod 3) = 0 Then R:= (F.Size Div 3)
Else R:= (F.Size Div 3) + 1 ;
Bmp.Width:= Round(Sqrt(R));
Bmp.Height:= Bmp.Width;
if (Bmp.Width*Bmp.Height) < R Then Bmp.Height:= Bmp.Height + 1;
For j:= 0 To Bmp.Height - 1 Do
begin
Line:= Bmp.ScanLine[j];
F.Read(Line^, Bmp.Width*3);
For i:= 0 To Bmp.Width - 1 Do
begin
if (Line^[i].R + Line^[i].G + Line^[i].B) Div 3 > 127 Then
begin
Line^[i].R:= $FF; Line^[i].g:= $FF; Line^[i].B:= $FF;
end
Else
begin
Line^[i].R:= $00; Line^[i].g:= $00; Line^[i].B:= $00;
end;
end;
end;
Image1.Canvas.Draw(0, 0, Bmp);
Bmp.SaveToFile('c:\test.bmp');
Bmp.Free;
F.Free;
end;
__________________
If end Then begin;
|