Hallo, ich möchte ein jpg Image verkleinern und wieder abspeichern, dazu habe ich folgenden code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| procedure TForm1.Button5Click(Sender: TObject); var jpeg, jpg: TJPEGImage; bmp: TBitmap; begin jpeg:=TJPEGImage.Create;
try openpicturedialog1.execute; jpeg.LoadFromFile(openpicturedialog1.FileName); bmp:=TBitmap.Create; try bmp.Assign(jpeg); bmp2 := TBitmap.Create; bmp2.Width := 350; bmp2.Height := 350; bmp2.Canvas.StretchDraw(Rect(0,0,bmp2.Width-1,bmp2.Height-1),bmp); BmpToJpg(openpicturedialog1.FileName);
finally bmp.free; bmp2.free; end; finally jpeg.free; end; end;
Procedure TForm1.BmpToJpg(const Filename: String; Quality: TJPEGQualityRange=100); var
Jpg: TJpegImage; begin
Jpg:=TJpegImage.Create; try
Jpg.CompressionQuality:=Quality; Jpg.Assign(Bmp2); Jpg.SaveToFile(ChangeFileExt(FileName, '.jpg' )); finally Jpg.Free;
end; end; |
Das funktioniert auch soweit aber erstens können die bilder verzerrt sein und zweitens sind die jpg´s nachher größer als vorher.
Meine Fragen nun, wie kann ich die neue Bildhöhe in abhängigkeit von der Bildbreite berechnen, also wenn ich eine bildbreite von 300 habe soll die höhe entsprechend dem verhältniss des ursprungsbildes angepasst werden.
Zweitens: Wie kann ich die Dateigröße verkleinern? Ich hab die g32.org graphics libary installiert, kann ich damit irgendwas machen ?