Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Aspect ratio berechnen (https://www.delphipraxis.net/161499-aspect-ratio-berechnen.html)

Cylence 6. Jul 2011 13:16

Aspect ratio berechnen
 
Hallo,

wie kann ich aus 2 zahlen das Aspect ratio berechnen, also zb bei videos oder bildern. zb bei 720 mal 576 wie komm ich da dann auch 4:3 oder 1920 mal 1080 = 16 : 9
usw.
Hat da jemand etwas fertiges? Oder hat jemand eine Idee?

gruß

tom

s.h.a.r.k 6. Jul 2011 13:17

AW: Aspect ratio berechnen
 
Sollte doch über den GGT gehen.

-- EDIT: Jup, habs gerade mal schnell mit Excel getestet. Einfach den GGT beider Zahlen ermitteln, dann dadurch teilen und man hat das passende Ergebnis.

Cylence 6. Jul 2011 13:22

AW: Aspect ratio berechnen
 
hi ok und wie hast du das dann da gemacht? Ich steh graud aufm schlauch glaub... sorry
ggt = größter gemeinsamer teiler oder ?

s.h.a.r.k 6. Jul 2011 13:32

AW: Aspect ratio berechnen
 
Äh?! Jup!
Delphi-Quellcode:
// Hier mal eine Version für D2010 aufwärts
TAspectRatio = record
  X, Y: Integer;
  procedure CalcRatio(const XRes, YRes: Integer);
end;

procedure TAspectRatio.CalcRatio(const XRes, YRes: Integer);
var
  GGT: Integer;
begin
  GGT := GetGGT(XRes, YRes);
  X := XRes div GGT;
  Y := YRes div GGT;
end;

// Oder das ganze für D2009 und älter
TAspectRatio = record
  X, Y: Integer;
end;

function GetAspectRatio(const XRes, YRes: Integer): TAspectRatio;
var
  GGT: Integer;
begin
  GGT := GetGGT(XRes, YRes);
  Result.X := XRes div GGT;
  Result.Y := YRes div GGT;
end;
Die Methode GetGGT musst dir halt irgendwo im Netz suchen :)

Cylence 6. Jul 2011 13:36

AW: Aspect ratio berechnen
 
Hi,

wow cool Thanks, bin jetzt auch grad aufm weg dazu gewesen :-) aber geil das ist ja noch besser so DANKE:

hier is die ggt berechnung auch bei delphi praxis

http://www.delphipraxis.net/36244-gg...gorithmus.html

Danke dir tausendfach, habs grad erst echt nich gecheckt wie ichs machen soll, manchmal steht man sowas von aufm schlauch *g* sorry

schlecki 6. Jul 2011 13:57

AW: Aspect ratio berechnen
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1110297)
Delphi-Quellcode:
// Hier mal eine Version für D2010 aufwärts
TAspectRatio = record
  X, Y: Integer;
  procedure CalcRatio(const XRes, YRes: Integer);
end;

nur am Rande: das geht so ab Delphi 2007.

s.h.a.r.k 6. Jul 2011 16:04

AW: Aspect ratio berechnen
 
Zitat:

Zitat von schlecki (Beitrag 1110305)
Zitat:

Zitat von s.h.a.r.k (Beitrag 1110297)
Delphi-Quellcode:
// Hier mal eine Version für D2010 aufwärts
TAspectRatio = record
  X, Y: Integer;
  procedure CalcRatio(const XRes, YRes: Integer);
end;

nur am Rande: das geht so ab Delphi 2007.

Okay, lasse mich gerne berichtigen :stupid:

Hier noch eine Version für den GGT:
Delphi-Quellcode:
// http://de.wikipedia.org/wiki/Steinscher_Algorithmus
function GGT(NumberA, NumberB: Int64): Int64;
var
  K, T : Int64;
begin
  if (NumberA = 0) then
    Exit(NumberB);
  K := 0;
  while (Even(NumberA) and Even(NumberB)) do
  begin
    NumberA := NumberA div 2;
    NumberB := NumberB div 2;
    Inc(K);
  end;

  if (Odd(NumberA)) then
    T := -NumberB
  else
    T := NumberA;

  while (T <> 0) do
  begin
    while (Even(T)) do
      T := T div 2;
    if (T > 0) then
      NumberA := T
    else
      NumberB := -T;
    T := NumberA - NumberB;
  end;
  if (K = 0) then
    Result := NumberA
  else
    Result := NumberA * (2 shl (K - 1));
end;

Medium 6. Jul 2011 20:21

AW: Aspect ratio berechnen
 
Und noch was am Rande: Das Seitenverhältnis (=aspect ratio in dt.) wird nicht zwangsweise in X:Y angegeben. Oft langt schon die Angabe "Breite dividiert durch Höhe" als reelle Zahl, vor allem zum Rechnen in einem Programm. X:Y nimmt man nur deswegen gerne, weil die gängigen Formate in periodische Zahlen münden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 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