[pascal]
function Tform1.outline( src : TBitmap ; transparentcolor , outlinecolor : TColor ): Tbitmap;
var
x, y: Integer;
begin

result:= TBitmap.Create;
zprofiler.Mark(1,True);
Result.Assign(src);
zprofiler.Mark(1,False);

for x := 1 to src.Width - 2 do
for y := 1 to src.Height - 2 do
begin
if (src.Canvas.Pixels[ x,y ] = transparentcolor) and
( (src.Canvas.Pixels[ x-1, y ] <> transparentcolor) or
(src.Canvas.Pixels[ x+1, y ] <> transparentcolor) or
(src.Canvas.Pixels[ x, y-1 ] <> transparentcolor) or
(src.Canvas.Pixels[ x, y+1 ] <> transparentcolor) ) then
Result.Canvas.Pixels[ x,y ] := outlinecolor;
end;
end;

function Tform1.makeglow(src : Tbitmap ; transparentcolor , glowcolor : TColor; outlinedarknessfactor, outlinesteps: Integer): TBitmap;
var
count : Integer;
begin
Result := TBitmap.Create;
Result.Assign(src);
for count:= 0 to outlinesteps-1 do
begin
Result := outline( Result, transparentcolor, glowcolor);
glowcolor := glowcolor + outlinedarknessfactor; // << this is wrong i know
end;
end;

procedure TForm1.Image1Click(Sender: TObject);
begin
image2.Picture.Bitmap:= makeglow(Image1.Picture.Bitmap, RGB(255,0,255), RGB(0,100,250), 100, 3);
end;
[/pascal]

;] it appers to have worked



But the code is toooooo slow
i think im making something wrong

EDIT: Reuploaded the img cuz jpeg is a TRASH to show details