AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder verkleinern

Ein Thema von w-lan · begonnen am 12. Jul 2006 · letzter Beitrag vom 12. Jul 2006
Antwort Antwort
w-lan

Registriert seit: 11. Mai 2005
16 Beiträge
 
#1

Bilder verkleinern

  Alt 12. Jul 2006, 09:34
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
  Mit Zitat antworten Zitat
mbamler

Registriert seit: 19. Mai 2005
Ort: Hamburg
118 Beiträge
 
Delphi 7 Architect
 
#2

Re: Bilder verkleinern

  Alt 12. Jul 2006, 09:42
Nimm dir ein zweites TImage und setze das Property "Strech" = true.
Setze die gewünschte Größe
und speicher es dann ab

Gruß
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Bilder verkleinern

  Alt 12. Jul 2006, 09:45
So zum Beispiel:


Delphi-Quellcode:
  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;
Grüsse Frank
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Bilder verkleinern

  Alt 12. Jul 2006, 09:58
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]
  Mit Zitat antworten Zitat
mbamler

Registriert seit: 19. Mai 2005
Ort: Hamburg
118 Beiträge
 
Delphi 7 Architect
 
#5

Re: Bilder verkleinern

  Alt 12. Jul 2006, 13:07
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 ?
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Bilder verkleinern

  Alt 12. Jul 2006, 13:52
Zitat von mbamler:
Wofür sind Images denn gedacht ?
Nun ja, es sind visuelle Komponenten (aka Controls), die sind nicht zum skalieren sondern zum anzeigen gedacht. Auch mit dem Speichern hat so ein Image recht wenig zu tun. Ein Image soll ein Bild darstellen und schleift den Zugriff auf das Bild auch noch durch.

Zitat von mbamler:
Was spricht gegen einen einfachen Weg ?
Die schlechte Angewohnheit eine visuelle Komponente zu verwenden um ein wenig rechnen zu vermeiden. Da er die neue größe aber selbst berechnet, wozu das Image? Was macht es? Es ruft sehr direkt die Methode StretchDraw (oder etwas äquivalentes) auf und letztlich kann dass schon direkt mit dem JPEG gemacht werden.

Zitat von mbamler:
Wenn's nicht nötig ist - wie geht's denn einfacher ?
Einfach mit StretchDraw oder StretchBlt arbeiten. Die sind genau dafür gedacht und machen das entsprechend ohne den Overhead einer zusätzlichen (unnötigen und zudem visuellen) Kapselung. Ist nicht schwerer und Images erleichtern einem hier eigentlich nichts, oder?

Zitat von mbamler:
Was ist schön ?
Das man sich hier so ruhig unterhalten kann und jeder weiß, dass hier keiner irgendwelche Kritik je persönlich nehmen würde. Denke doch das siehst du ähnlich?
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz