Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Procedure zum Exakten Verkleinern von Jpegs

  Alt 2. Mai 2005, 18:23
Ich werde mir mal deinen Code zu Gemüte führen (ein paar Kommentare wären gut gewesen ), aber:
Delphi-Quellcode:
function Vorkomma (z : real) : Integer;
// Ne Menge Code
Delphi-Referenz durchsuchenTrunc
function Nachkomma (z : real) : Real; Delphi-Referenz durchsuchenCeil
function mkslash (s : string) : string; Delphi-Referenz durchsuchenIncludeTrailingPathDelimiter

[edit] Ich arbeite mich vor:
Delphi-Quellcode:
 if Nachkomma (YPos + YFak) <> 0 then
   Yend := Vorkomma (YPos + YFak) + 1
 else
   Yend := Vorkomma (YPos + YFak);
Yend := Ceil(YPos + YFak);
Hier könnte deine Funktion sogar schieflaufen, da durch die Ungenauigkeit von Fließkommavariablen ein Gleich/Ungleich-Vergleich von diesen meistens nicht das gewünschte Ergebnis liefert.

[edit2]
Delphi-Quellcode:
p : pbytearray;
(p[x0*3+2],p[x0*3+1],p[x0*3])
Delphi-Referenz durchsuchenPRGBTriple

[edit3]
Tut mir leid, aber ich blicke da einfach nicht durch .
Ich würde es einfach so machen :
Delphi-Quellcode:
uses GR32;

procedure Foo(NewWidth, NewHeight: Integer; ...);
var
  From, To: TBitmap32;
  xFactor, yFactor: Single;
  x, y: Integer;
begin
  From := TBitmap32.Create;
  From.LoadFromFile(...);
  To := TBitmap32.Create;
  xFactor := NewWidth / From.Width;
  yFactor := NewHeight / From.Height;
  To.SetSize(NewWidth, NewHeight);
  for x := 0 to From.Width - 1 do
    for y := 0 to From.Height - 1 do
      To.PixelF[x * xFactor, y * yFactor] := From.Pixel[x, y];
  ...
GR32-Lib

PS: Warum verwendest du ScanLine und nachher doch Pixel ?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat