Bitmap/Read a PPM file: Difference between revisions
→{{header|Delphi}}
MaiconSoft (talk | contribs) No edit summary |
MaiconSoft (talk | contribs) |
||
Line 387:
System.SysUtils,
System.Classes,
Winapi.Windows,
Vcl.Graphics;
Line 393 ⟶ 394:
private
public
procedure SaveAsPPM(FileName: TFileName; useGrayScale: Boolean = False);
procedure LoadFromPPM(FileName: TFileName; useGrayScale: Boolean = False);
end;
var
begin▼
L := round(0.2126 * GetRValue(Color) + 0.7152 * GetGValue(Color) + 0.0722 *
GetBValue(Color));
end;▼
{ TBitmapHelper }
procedure TBitmapHelper.SaveAsPPM(FileName: TFileName; useGrayScale: Boolean = False);
var
i, j, color: Integer;
Line 414 ⟶ 424:
for j := 0 to Self.Width - 1 do
begin
if useGrayScale then
color := ColorToRGB(Self.Canvas.Pixels[i, j]);▼
color := ColorToGray(ColorToRGB(Self.Canvas.Pixels[i, j]))
else
▲ color := ColorToRGB(Self.Canvas.Pixels[i, j]);
ppm.Write(color, 3);
end;
Line 423 ⟶ 436:
end;
procedure TBitmapHelper.LoadFromPPM(FileName: TFileName; useGrayScale: Boolean = False);▼
▲function BigEndianFix(Color: TColor): TColor;
▲begin
▲ Result := Color;
▲end;
▲procedure TBitmapHelper.LoadFromPPM(FileName: TFileName);
var
p: Integer;
ppm: TMemoryStream;
▲// buffer: Byte;
sW, sH: string;
temp: AnsiChar;
Line 473 ⟶ 480:
while ppm.Read(Color, 3) > 0 do
begin
if useGrayScale then
Color := ColorToGray(Color);
Canvas.Pixels[p mod W, p div W] := Color;
inc(p);
Line 484 ⟶ 493:
// Load bmp
LoadFromFile('Input.bmp');
// Save as ppm
SaveAsPPM('Output.ppm');
// Load as ppm and convert in grayscale
LoadFromPPM('Output.ppm', True);
// Save as bmp
|