1) Mittles TJPegImage laden
2) In ein Bitmap kopieren, am besten mit TBitmap.Assign()
3) Neue Größe berechnen, z.B. Mit:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure ProportionalSize(FrameWidth, FrameHeight, ObjectWidth, ObjectHeight: Integer; out Width, Height: Integer); begin If (FrameWidth / ObjectWidth) * ObjectHeight > FrameHeight Then begin Width := Round((ObjectWidth / ObjectHeight) * FrameHeight); Height := FrameHeight; end Else begin Width := FrameWidth; Height := Round((ObjectHeight / ObjectWidth) * FrameWidth); end; end; |
FtameWidth, frameHeight stellt die maximale Größe dar, ObjectWidth, ObjectHeight die aktuelle Größe, Width, Height ist die neu berechnete Größe, die in den vorgegebenen Rahmen passt, und trotzdem proporional ist.
4) Verkleinern:
Quelltext
1:
| BitBlt(Bitmap1.Canvas.Handle, 0, 0, NewX, NewY, Bitmap1.Canvas.Handle, 0, 0, Bitmap1.Width, Bitmap1.Height, SrcCopy); |
5) Bitmap verkleinern, also mit TBitmap.Width bwz.Height
6) Bitmap in JPEG kopieren
7) JPEG speichern