AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Wie kann ich die angezeigte Größe des Images ermitteln?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann ich die angezeigte Größe des Images ermitteln?

Ein Thema von loirad · begonnen am 4. Okt 2012 · letzter Beitrag vom 4. Okt 2012
Antwort Antwort
Seite 1 von 2  1 2      
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#1

Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 16:15
Hallo liebe Community,

ich habe ein TImage, in das mit dem OpenDialog Bilder geladen werden können. Das wird dann auf eine Größe von max. 500*500 Pixel proportional skaliert. (Strech und Proportional=true) Wie kann ich die tatsächlich angezeigte Größe ausgeben (die, die kleiner oder gleich 500*500 ist)?

Liebe Grüße
loirad
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 16:30
TImage.Picture.Width und TImage.Picture.Height
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#3

AW: Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 16:34
Vielen Dank für die Antwort!
Da bekomme ich aber die urspünglichen Werte des Originalbildes, die (in dem Fall) größer als 500*500 sind raus. Ich möchte aber auf das Canvas dieses Bildes in die Mitte was zeichnen!
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 16:42
Delphi-Quellcode:
Procedure GetFittingHW(OuterW,OuterH:Integer;var InnerW,InnerH:Integer);
var
 vh:Double;
begin
    Assert((OuterW<>0) and (OuterH<>0),'Division durch 0');

    if (InnerW /OuterW) < (InnerH /OuterH) then vh := (InnerH /OuterH)
    else vh := (InnerW /OuterW);

    Assert((vh<>0) ,'Division durch 0');

    InnerW := Round(InnerW/vh);
    InnerH := Round(InnerH/vh);
end;

procedure TForm3.Button1Click(Sender: TObject);
var
 w,h:Integer;
begin
  w := image1.Picture.Width;
  h := image1.Picture.Height;
  GetFittingHW(Image1.Width,image1.Height,w,h);
  Showmessage(Format('Breite: %d Höhe %d',[w,h]));
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 4. Okt 2012 um 16:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 16:44
OK, dann hatte ich deine Frage falsch verstanden.

Dafür gibt es leider keine direkt verfügbare Funktionalität. Du kannst aber über entweder über einen Hack oder einen Class Helper and die Funktion DestRect herankommen, die dir das gewünschte Rechteck liefert.


Delphi-Quellcode:
type
  TImageHelper = class helper for TImage
    function EffectiveRect: TRect;
  end;

function TImageHelper.EffectiveRect: TRect;
begin
  result := DestRect;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#6

AW: Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 16:45
Danke für die Antwort!
Kann man das nicht direkt aus dem Image auslesen oder so?
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#7

AW: Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 16:59
Habe es jetzt so gelöst:
Delphi-Quellcode:
 
if (Bild1.Picture.Height<>0) and (Bild2.Picture.Height<>0) then
  begin
   if Bild1.Picture.Height<Bild1.Picture.Width then
    begin
     B1w:=Bild1.Width;
     B1h:=round(((Bild1.Picture.Height)/(Bild1.Picture.Width))*Bild1.Width);
    end
    else
     begin
      B1w:=((Bild1.Picture.Height) div (Bild1.Picture.Width))*Bild1.Width;
      B1h:=Bild1.Width;
     end;
Vielen Dank für eure Hilfe!

Schöne Rest-Woche noch!
loirad
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 17:14
Das Ergebnis stimmt hier aber nicht ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#9

AW: Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 17:16
Warum was funktioniert nicht?
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Wie kann ich die angezeigte Größe des Images ermitteln?

  Alt 4. Okt 2012, 17:32
Du berücksichtigst nicht dass Image und Bild jeweils beliebige Seitenverhältnisse haben können.

Code:
gef .H 133 gef. B 177
Imageh. 177 Imageb. 97
Bildh. 301 Bildb. 401
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:27 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