function TForm1.RadarGifToBmp(strSource, strDest: string): Boolean;
var
I,j: Integer;
image1:Timage;
gif1:Tgifimage;
begin
try
image1:=timage.Create(owner);
gif1:=Tgifimage.Create;
gif1.LoadFromFile(ExtractFileDir(application.ExeName) + '\radar\' + strSource);
image1.Picture.Bitmap:=gif1.Bitmap; for I := 2 to 574 do
begin
for j := 2 to 574 do
begin
if (image1.Canvas.Pixels[i,j]=rgb(149,108,66)) or (image1.Canvas.Pixels[i,j]=rgb(82,82,139)) or (image1.Canvas.Pixels[i,j]=rgb(212,155,95)) or (image1.Canvas.Pixels[i,j]=rgb(117,117,199)) then image1.Canvas.Pixels[i,j] := rgb(255,255,255);
end;
end; image1.Canvas.CopyMode:=cmSrcCopy;
image1.Canvas.CopyRect(rect(0,0,572,572),image1.Canvas,rect(2,2,574,574)); image1.Picture.Bitmap.Width:=572;
image1.Picture.Bitmap.Height:=572; image1.Picture.SaveToFile(ExtractFileDir(application.ExeName)+'\radartemp\'+strDest); image1.free;
gif1.Free;
result:=True;
except
result:=False;
end;
end;
var
I,j: Integer;
image1:Timage;
gif1:Tgifimage;
begin
try
image1:=timage.Create(owner);
gif1:=Tgifimage.Create;
gif1.LoadFromFile(ExtractFileDir(application.ExeName) + '\radar\' + strSource);
image1.Picture.Bitmap:=gif1.Bitmap; for I := 2 to 574 do
begin
for j := 2 to 574 do
begin
if (image1.Canvas.Pixels[i,j]=rgb(149,108,66)) or (image1.Canvas.Pixels[i,j]=rgb(82,82,139)) or (image1.Canvas.Pixels[i,j]=rgb(212,155,95)) or (image1.Canvas.Pixels[i,j]=rgb(117,117,199)) then image1.Canvas.Pixels[i,j] := rgb(255,255,255);
end;
end; image1.Canvas.CopyMode:=cmSrcCopy;
image1.Canvas.CopyRect(rect(0,0,572,572),image1.Canvas,rect(2,2,574,574)); image1.Picture.Bitmap.Width:=572;
image1.Picture.Bitmap.Height:=572; image1.Picture.SaveToFile(ExtractFileDir(application.ExeName)+'\radartemp\'+strDest); image1.free;
gif1.Free;
result:=True;
except
result:=False;
end;
end;
function TForm1.RadarGifToBmp(strSource, strDest: string): Boolean;
type
PRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray = array[0..32767] of TRGBTriple;
function GetSLColor(pRGB: TRGBTriple): TColor;
begin
Result := RGB(pRGB.rgbtRed, pRGB.rgbtGreen, pRGB.rgbtBlue);
end;
var
I, j: Integer;
image1: Timage;
gif1: Tgifimage;
p0, p1: PRGBTripleArray;
begin
try
image1 := timage.Create(owner);
gif1 := Tgifimage.Create;
gif1.LoadFromFile(ExtractFileDir(application.ExeName) + '\radar\' + strSource);
image1.Picture.Bitmap := gif1.Bitmap;////////////////
//最关键的地方如下:
Image1.Picture.Bitmap.PixelFormat := pf24bit;
for I := 2 to 574 do
begin
p0 := image1.Picture.Bitmap.ScanLine[I];
for j := 2 to 574 do
begin
if (GetSLColor(p0[j]) = rgb(149, 108, 66))
or (GetSLColor(p0[j]) = rgb(82, 82, 139))
or (GetSLColor(p0[j]) = rgb(212, 155, 95))
or (GetSLColor(p0[j]) = rgb(117, 117, 199)) then
begin
p0[j].rgbtRed := 255;
p0[j].rgbtGreen := 255;
p0[j].rgbtBlue := 255;
end;
end;
end;
//////////////////////////////
image1.Canvas.CopyMode := cmSrcCopy;
image1.Canvas.CopyRect(rect(0, 0, 572, 572), image1.Canvas, rect(2, 2, 574, 574)); image1.Picture.Bitmap.Width := 572;
image1.Picture.Bitmap.Height := 572; image1.Picture.SaveToFile(ExtractFileDir(application.ExeName) + '\radartemp\' + strDest); image1.free;
gif1.Free;
result := True;
except
result := False;
end;
end;