Jetzt musste ich es doch mal selbst ausprobieren
:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Bit1, Bit2: TBitmap32;
const SrcRect: TRect = (Left: 0; Top: 0; Right: 1024; Bottom: 768);
DstRect: Trect = (Left: 0; Top: 0; Right: 800; Bottom: 600);
begin
if not OpenDialog1.Execute then
Exit;
Bit1 := TBitmap32.Create;
Bit2 := TBitmap32.Create;
Bit1.LoadFromFile(OpenDialog1.FileName);
Bit2.SetSize(DstRect.Right, DstRect.Bottom);
StretchTransfer(Bit2, DstRect, DstRect, Bit1, SrcRect, sfLinear, dmOpaque);
Bit2.SaveToFile(OpenDialog1.FileName);
Bit1.Free;
Bit2.Free;
end;
Ich übernehme keine Haftung, wenn jemand ein wichtiges Bild überschreiben lässt
.
[edit] Ich nehme alles zurück, das wird ja als BMP gespeichert
.
[edit2] Jetzt aber:
Delphi-Quellcode:
var Bit1, Bit2: TBitmap32;
JBit: TJPEGImage;
Bit: TBitmap;
const SrcRect: TRect = (Left: 0; Top: 0; Right: 1024; Bottom: 768);
DstRect: Trect = (Left: 0; Top: 0; Right: 800; Bottom: 600);
begin
if not OpenDialog1.Execute then
Exit;
Bit1 := TBitmap32.Create;
Bit2 := TBitmap32.Create;
JBit := TJPEGImage.Create;
Bit := TBitmap.Create;
Bit1.LoadFromFile(OpenDialog1.FileName);
Bit2.SetSize(DstRect.Right, DstRect.Bottom);
StretchTransfer(Bit2, DstRect, DstRect, Bit1, SrcRect, sfLinear, dmOpaque);
Bit.Width := DstRect.Right;
Bit.Height := DstRect.Bottom;
BitBlt(Bit.Canvas.Handle, 0, 0, 800, 600, Bit2.Handle, 0, 0, SRCCOPY);
JBit.Assign(Bit);
JBit.SaveToFile(OpenDialog1.FileName);
Bit1.Free;
Bit2.Free;
Bit.Free;
JBit.Free;
end;
Die Namensgebung ist vielleicht etwas schlecht, naja, hauptsache es geht.