Autor Beitrag
lemmond1976
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Mo 28.04.03 23:15 
hi,

weiß jemand wie ich jpeg Bilder verkleinern kann? Ich möchte breite Bilder in der Breite bescheiden und hohe Bilder in der Höhe beschneiden. Also, die Proportionen sollen erhalten bleiben und nachher sollte das jpeg Bild als Datei abgespeichert werden.

Wäre echt für jede Antwort dankbar !

Viele Grüße
Gunnar

Moderiert von user profile iconTino: Absätze entfernt.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mi 30.04.03 18:09 
1) Mittles TJPegImage laden
2) In ein Bitmap kopieren, am besten mit TBitmap.Assign()
3) Neue Größe berechnen, z.B. Mit:
ausblenden 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:
ausblenden 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

_________________
Life is a bad adventure, but the graphic is really good!
lemmond1976 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Mi 30.04.03 20:49 
Super, danke !!!
lemmond1976 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Mi 07.05.03 23:34 
heute habe ich Deinen Code endlich mal ausprobiert, funktioniert super. Nur das Bild wird nicht verkleinert, sondern nur der Rahmen. Somit erhalte ich nur einen Ausschnitt und nicht das Bild in voller Größe. BitBlt hat zu viele Parameter...

FrameWidth setze ich auf 200,
FrameHeight auf 200

kann man ja zum Beispiel im Edit-Feld eingeben... newx und newy bildet den korrekten Rahmen. Soweit läuft alles ok. Das Bild wird aber leider nicht verkleinert. Vielleicht liegt es an BitBlt...

Kannst Du mir nochmal helfen? Danke !

Gruss
Gunnar

Moderiert von user profile iconTino: Absätze entfernt.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Do 08.05.03 16:18 
:oops:

Klar, BitBlt() muss StretchBlt() heißen. Sorry. Es kann auch nicht gehen, denn BitBlt() hat 2 Parameter weniger. Ersetze einfach den Code von meinem alten Posting durch StretchBlt(), die Parameter bleiben,

_________________
Life is a bad adventure, but the graphic is really good!