Autor |
Beitrag |
Philipp_Reitter
      
Beiträge: 430
|
Verfasst: Mo 17.07.06 19:37
Hi
ich will ein Bild (Jpg oder Bmp is egal welches format) verkleinern aber die proportionen beibehalten! denn wenn ich bei meinem prog auf OK drück dann soll das bild so verkleinert werden dass es in das Image hineinpasst jedoch die proportionen gleich bleiben, sonst siehts *mist*e aus... kann mir jemand helfen?
PS: wenn ich strecht und Proportional bei dem TImage auf true setzen functioniert meine function nicht mahr, und zwar das nicht mehr dass da ein punkt beim hinklicken erscheint wo ich hinklicke. sondern er setzt sich irgendwo anders hin!
Mfg Philipp
|
|
root_at_localhost
      
Beiträge: 191
|
Verfasst: Sa 22.07.06 18:49
Du musst das Bild einlesen und dann manuell verkleinern und ausgeben, die richtige Höhe und Breite für die Proportionen musst du halt ausrechnen...
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: So 23.07.06 19:33
verkleinern ist nicht das problem sondern das mit den proportionen ausrechnen!!!
gibts da nicht irged eine formel denn ich hab 0 ahnung wie ich das anstellen soll...?!
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: So 23.07.06 20:19
bsp. Du Rechnest bei einem Bild Breite 800, Höhe 600
600 / 800 = Faktor 0,75
Wenn Du jetzt zum Beispiel das Bild eine Breite von 400 verpassen willst
Rechnest Du Die Neue Breite 400 x 0,75 und hast dann deine entsprechende Höhe.
|
|
root_at_localhost
      
Beiträge: 191
|
Verfasst: So 23.07.06 20:31
Na lass mal schaun, ich hab das grad nich getestet, aber etwa so ging es:
Seitenverhältnis vom Bild = Bildbreite / Bildhöhe
Seitenverhältnis der Imagekomponente = Komponentenbreite / Komponentenhöhe
Wenn jetzt Seitenverhältnis vom Bild = Seitenverhältnis der Imagekomponente dann stimmen die Proportionen, OK?
Wenn aber Seitenverhältnis vom Bild < Seitenverhältnis der Imagekomponente dann brauchst du rechts und links schwarze Balken oder sowas.
Du nimmst also die volle Höhe der Imagekomponente, aber nicht die volle Breite.
Welche Breite du brauchst kannst du wieder ausrechnen,
Seitenverhältnis vom Bild = x / Komponentenhöhe
nach x auflösen, ausrechnen und du hast die Breite,
wenn Seitenverhältnis vom Bild > Seitenverhältnis der Imagekomponente halt analog die Höhe ausrechnen...
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Mo 24.07.06 09:39
versteh nur bahnhof!!!
außer eines...
ich will ja nicht das Verhält nis vom bild mit dem verhält nis vom TImage vergleichen... das hatt wenig sinn weil das TImage kan 100x500 sein und mein bild 300x400 ???
wenn dann irgend einen script der ausrechnet um wie viele prozent der länge und breite des bildes es verkleinert werden muss damit es in 600x400 passt und dann das um so viel verkleinern....
oder ne variante,
was währ wenn das bild in ein IMage geladen wird.
image.proportional=true, strech=true,
und dann das bild dass man sieht (das gestrechte) abspeichern lassen.... nur wie?
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mo 24.07.06 09:59
Um dein Bild entsprechend zu ändern brauchst Du das Verhältnis von Höhe zu Breite wie Ich Oben geschrieben hab, wo ist nun dein Problem.
|
|
Bääääär
      
Beiträge: 117
|
Verfasst: Mo 24.07.06 15:20
Pass auf:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.BitBtn1Click(Sender: TObject); var r: Trect; z1,z2: single; begin z1:=image1.height/bmp.height; z2:=image1.width/bmp.width;
if z1>z2 then begin with r do begin left:=0; top:=0; right:=image1.Picture.Bitmap.width; bottom:=round(bmp.height*z2); end; end else begin with r do begin left:=0; top:=0; right:=round(bmp.width*z1); bottom:=image1.Picture.Bitmap.height; end; end; image1.Picture.Bitmap.canvas.StretchDraw(r,bmp); |
Alles Klar?
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Di 25.07.06 07:58
ne gar nix klar... es passiert nichts (ich hab aber schon ein bmp:=TBitmap.create gemacht und dann loadfromfile(... ) aber es geh nicht
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Di 25.07.06 19:35
Wie es aussieht scheinst Du Dir nicht allzuviel Gedanken zu machen und erwartest hier fertige Lösungen für dein Problem, das wird nichts werden !
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Mi 26.07.06 08:30
tut mir leid aber ich kann mir über nichts gedanken machen, von dem ich nix kapier ich hab noch fas nie mit Bitmaps gearbeitet...
und was hab ich an dem script oben falsch gemacht... muss ich da noch irgendwas hinzufügen oder selbst denken?
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 26.07.06 09:19
Philipp_Reitter hat folgendes geschrieben: | tut mir leid aber ich kann mir über nichts gedanken machen, von dem ich nix kapier ich hab noch fas nie mit Bitmaps gearbeitet... |
Dann zeig mal, was du gemacht hast, und versuche, deine Gedanken dazu aufzuführen. Irgendwas geht doch bestimmt in deinem Kopf vor, wenn du versuchst, Quelltext hier zu verwenden und/oder zu verstehen, oder? Ohne Ansatzpunkte, was du machst oder probiert hast, können wir auch nicht sagen, warum da was nicht funktioniert...
Philipp_Reitter hat folgendes geschrieben: | muss ich da noch [...] selbst denken? |
Zur Zeit schon. Wenn du noch ein bißchen wartest, gibts aber ne Pille dazu:
Zager&Evans singen im Lied 'In the Year 2525': | In the year 3535
Ain't gonna need to tell the truth, tell no lies
Everything you think, do, or say
Is in the pill you took today. |
_________________ We are, we were and will not be.
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mi 26.07.06 10:02
Vieleicht Hilft das ein wenig weiter, gillt als ansatz zum Weiterdenken.
www.delphi-forum.de/...54412&highlight=
|
|