Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi einfach jpges verkleiner (bild und filesize) ? (https://www.delphipraxis.net/81678-einfach-jpges-verkleiner-bild-und-filesize.html)

agm65 1. Dez 2006 13:57


einfach jpges verkleiner (bild und filesize) ?
 
suche nach einer möglichst einfachen möglichkeit JPGS zu verkleiner , in datei größe und format.
hat jemand eine idee ? danke jungs

es geht nur um jpgs -> keine bmps oder so

dataspider 2. Dez 2006 12:43

Re: einfach jpges verkleiner (bild und filesize) ?
 
Hallo,

ich habe es realisiert mit Graphics32.

Delphi-Quellcode:
procedure TFRMEdtImmoBild.LoadAndConvertImage(const AFileName: string);
Var
  R: TKernelResampler;
  ASrcImage: TBitMap32;
  ADstImage: TBitMap32;
  ABmp: TBitMap;
  AJPeg: TJPegImage;
  AScale: Extended;
begin
  // Zum Abspeichern als Jpeg
  AJPeg    := TJPEGImage.Create;

  // als Buffer von TImage32 zu TJpeg
  ABmp     := TBitMap.Create;
  // Originalbild
  ASrcImage := TBitmap32.Create;
  // verkleinertes Bild
  ADstImage := TBitMap32.Create;

  Screen.Cursor := crHourGlass;

  try
    // Datei laden
    ASrcImage.LoadFromFile(AFileName);

    // Skalierungsfaktor (z.B. 0.5 zum Verkleinern auf 50 %
    // in diesem Beispiel wir das Bild max. 300 Pixel breit oder hoch sein
    AScale := (300 / Max(ASrcImage.Width, ASrcImage.Height));

    // Zielbild Größe einstellen
    ADstImage.Width := Round(ASrcImage.Width * AScale);
    ADstImage.Height := Round(ASrcImage.Height * AScale);

    R := TKernelResampler.Create(ASrcImage);
    R.Kernel := TLanczosKernel.Create;

    // Zielbild ist fertig
    ADstImage.Draw(ADstImage.BoundsRect, ASrcImage.BoundsRect, ASrcImage);

    // direkt geht es leider nicht in das AJpeg
    ABmp.Assign(ADstImage);

    if AJPeg.CompressionQuality <> defJpegQuality then
      AJPeg.CompressionQuality := defJpegQuality;

    AJPeg.Assign(ABmp);

    // TDMImmoBild(DataModule).StoreImages(AJPeg);
    // Speichern AJPeg.SaveToFile ???

  finally
    Application.ProcessMessages;
    Screen.Cursor := crDefault;
    AJPeg.Free;
    ABmp.Free;
    ADstImage.Free;
    ASrcImage.Free;
  end;
end;
Cu, Frank

Namenloser 2. Dez 2006 12:55

Re: einfach jpges verkleiner (bild und filesize) ?
 
Delphi-Quellcode:
  finally
    Application.ProcessMessages;
Wozu soll das gut sein? o.O

MrKnogge 2. Dez 2006 14:31

Re: einfach jpges verkleiner (bild und filesize) ?
 
Damit dein Programm noch reagiert.

dataspider 2. Dez 2006 16:06

Re: einfach jpges verkleiner (bild und filesize) ?
 
Zitat:

Zitat von NamenLozer
Delphi-Quellcode:
  finally
    Application.ProcessMessages;
Wozu soll das gut sein? o.O

Damit die Sanduhr wirklich so lange zu sehen ist, wie der Prozess dauert.
Aber man kann es auch weglassen.

Frank

agm65 5. Dez 2006 15:57

Re: einfach jpges verkleiner (bild und filesize) ?
 
kann ich diese g32 komponente für kommerzielle zwecke nutzen ?

DGL-luke 5. Dez 2006 16:07

Re: einfach jpges verkleiner (bild und filesize) ?
 
Sie steht unter der MPL, sagt zumindest die aktuelle Doc: http://graphics32.org/documentation/...ew/License.htm

Ich glaube, die ist für kommerzielle Projekte gültig. musst du aber nachlesen. Deutsche Übersetzung Deutsches FAQ gibts hier:

http://dsdt.info/jedi/mpl.php

ZeroQool007 29. Mär 2007 08:48

Re: einfach jpges verkleiner (bild und filesize) ?
 
welche units muss ich alle einbinden?! thx


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