Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

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

AW: JPG Resize bei großen Dateien

  Alt 23. Jul 2013, 17:03
Hallo Zusammen,

Ich habe eine kleine Routine zum Verkleinern von JPG-Bildern. Bei vielen Bildern funktioniert es auch wunderbar, bei einigen nicht.
Was die Bilder gemeinsam haben, bei denen es nicht funktioniert, ist, dass sie sehr groß sind (> 2 MB).
Hier mal der Code:
Delphi-Quellcode:
  procedure prcResizeJPG(sPath: String; iWidth: Integer; iHeight: Integer);
  var
    imgBMP: TBitmap;
    imgJPG: TJpegImage;
  begin
    imgJPG := TJpegImage.Create;
    try
      imgJPG.LoadFromFile(sPath);
      imgBMP := TBitmap.Create;
      try
        imgBMP.Width := iWidth;
        imgBMP.Height:= iHeight;
        imgBMP.Canvas.StretchDraw(imgBMP.Canvas.Cliprect, imgJPG);
        Self.Canvas.Draw(100, 10, imgBMP);
        imgJPG.Assign(imgBMP);
        imgJPG.SaveToFile(sPath);
      finally
        imgBMP.free;
      end;
    finally
      imgJPG.free;
    end;
  end;
Probiere ich diesen Code, stürzt es bei StrechDraw ab. Gibt es eine Möglichkeit, dies zu verbessern?
Sicher, dass es an der Größe liegt und nicht am jpg File?

Delphi-Quellcode:
        imgJPG.Assign(imgBMP);
        imgJPG.Compress; // <-- fehlt das nicht?
        imgJPG.SaveToFile(sPath);
Mavarik
  Mit Zitat antworten Zitat