| procedure JxSmoothResize(NewWidth, NewHeight: Cardinal; var Src: TBitmap);var
 x, y, xP, yP, yP2, xP2: integer;
 Read, Read2: PByteArray;
 t, z, z2, iz2: integer;
 pc: PBytearray;
 w1, w2, w3, w4: integer;
 Col1r, col1g, col1b, Col2r, col2g, col2b: byte;
 Dst:TBitmap;
 begin
 Dst := TBitmap.Create;
 Dst.PixelFormat := pf24Bit;
 Dst.Width  := NewWidth;
 Dst.Height := NewHeight;
   xP2 := ((src.Width - 1) shl 15) div Dst.Width;yP2 := ((src.Height - 1) shl 15) div Dst.Height;
 yP := 0;
 for y := 0 to Dst.Height - 1 do
 begin
 xP := 0;
 Read := src.ScanLine[yP shr 15];
 if yP shr 16 < src.Height - 1 then
 Read2 := src.ScanLine[yP shr 15 + 1]
 else
 Read2 := src.ScanLine[yP shr 15];
 pc := Dst.scanline[y];
 z2 := yP and $7FFF;
 iz2 := $8000 - z2;
 for x := 0 to Dst.Width - 1 do
 begin
 t := xP shr 15;
 Col1r := Read[t * 3];
 Col1g := Read[t * 3 + 1];
 Col1b := Read[t * 3 + 2];
 Col2r := Read2[t * 3];
 Col2g := Read2[t * 3 + 1];
 Col2b := Read2[t * 3 + 2];
 z := xP and $7FFF;
 w2 := (z * iz2) shr 15;
 w1 := iz2 - w2;
 w4 := (z * z2) shr 15;
 w3 := z2 - w4;
 pc[x * 3 + 2] :=
 (Col1b * w1 + Read[(t + 1) * 3 + 2] * w2 +
 Col2b * w3 + Read2[(t + 1) * 3 + 2] * w4) shr 15;
 pc[x * 3 + 1] :=
 (Col1g * w1 + Read[(t + 1) * 3 + 1] * w2 +
 Col2g * w3 + Read2[(t + 1) * 3 + 1] * w4) shr 15;
 pc[x * 3] :=
 (Col1r * w1 + Read2[(t + 1) * 3] * w2 +
 Col2r * w3 + Read2[(t + 1) * 3] * w4) shr 15;
 Inc(xP, xP2);
 end;
 Inc(yP, yP2);
 end;
   trySrc.Assign(Dst);
 finally
 Dst.Free;
 end;
 end;
 
 -------------
 http://www.kasatakip.com - Kasa Takip  |  http://www.caritakip.com - Cari Takip  |  http://www.evraktakip.com - Evrak Takip  |  http://www.etasqlmobil.com - ETA SQL Mobil
 |