![]() |
Bilder verkleinern
Hallo,
ich wollte in Delphi ein jpg-Bild einlesen und dies verkleinern. Es soll eine neue Breite eingelesen werden und daraus ergibt sich die neue Höhe mit der Formel : neue Höhe = aktuelle Höhe *neue Breite / aktuelle Breite Jedoch wie lade und speichere ich ein jpg in Delphi, wie komme ich an die aktuellen Bilddaten heran (Höhe, Breite, etc.) und wie kann ich das Bild nach der obigen Formel skalieren? Ist vielleicht ein bisschen viel gefragt..... ... bedanke mich aber für Denkanstösse im Voraus! Gruß w-lan |
Re: Bilder verkleinern
Nimm dir ein zweites TImage und setze das Property "Strech" = true.
Setze die gewünschte Größe und speicher es dann ab Gruß Matthias |
Re: Bilder verkleinern
So zum Beispiel:
Delphi-Quellcode:
Grüsse Frank
Procedure GetDimentions(Xmax,Ymax:integer;Bildname:string;Var Dimx,Dimy:integer;Oversize:boolean);
var x,y,Xa,Ya : integer; Image1 : TImage; begin try x := 0; y := 0; Image1 := TImage.Create(nil); Image1.AutoSize := true; Image1.Picture.LoadFromFile(Bildname); x := Image1.width; y := Image1.height; finally Image1.Free; end; try if (X < XMax) and (Y < YMax) then begin // Grafik zu klein! if Oversize then begin if Abs(Y / Ymax) < Abs(X / Xmax) then begin // X Maximieren DimX := XMax; DimY := Y*XMax div X; end else begin // Y Maximieren DimY := YMax; DimX := X*YMax div Y; end; end else begin Dimx := X; DimY := Y; end; end else begin // Grafik größer! if (X < XMax) or (Y < YMax) then begin if Y>=Ymax then begin // Y Maximieren DimY := YMax; DimX := X*YMax div Y; end else begin // X Maximieren DimX := XMax; DimY := Y*XMax div X; end end else begin if Abs(Y / Ymax) > Abs(X / Xmax) then begin // Y Maximieren DimY := YMax; DimX := X*YMax div Y; end else begin // X Maximieren DimX := XMax; DimY := (Y*XMax) div X; end end; end; except DIMX := 0; DIMY := 0; end; end; |
Re: Bilder verkleinern
Hi,
ich glaube du wirst alles nötige in der Forensuche finden, such einfach nach skalieren, jpeg laden und jpeg speichern. Desweiteren ein grober Ablauf (Suchen musst du selber!): TJpegImage wirst du brauchen um das Bild zu laden und zu speichern. Arbeiten musst du letztlich mit einem Bitmap Objekt, hier kannst du mittels StretchDraw bzw. StretchBlt leicht die Größe verändern. Wie man lädt, speichert und in ein Bitmap (bzw. zurück) wandelt und wie du die Größe rausbekommst, das findest du sicherlich alles in der OH und in der Suche dieses Forums! Gruß Der Unwissende [Anmerkung nach rotem Kasten]Nimm lieber kein TImage objekt, würde ich dir wirklich von Abraten, dafür sind die nicht gedacht. Mag ein einfacherer Weg sein, aber irgendwie nicht wirklich nötig und schön[/Anmerkung] |
Re: Bilder verkleinern
Wofür sind Images denn gedacht ?
Was spricht gegen einen einfachen Weg ? Wenn's nicht nötig ist - wie geht's denn einfacher ? Was ist schön ? |
Re: Bilder verkleinern
Zitat:
Zitat:
Zitat:
Zitat:
Wie gesagt, es stimmt ja alles, man kann es mit Images machen und um es noch einmal deutlicher zu sagen, ich denke es ist unschön. Hat aber keine Relevanz, ist nur meine subjektive Meinung (schließlich sprach ein Bundestrainer einst von objektiven Meinungen). Jeder kann es auch weiterhin machen wie er möchte und was ich schön finde und was nicht ist natürlich auch völlig egal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz