Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bilder von gesamten Ordner verkleinern (https://www.delphipraxis.net/7827-bilder-von-gesamten-ordner-verkleinern.html)

Matze 22. Aug 2003 12:13


Bilder von gesamten Ordner verkleinern
 
Hallo zusammen!

Ich habe einen Ordner, in dem Bilder gespeichert sind. In einer ListBox zeigt es mir die jeweiligen Pfade an.

Wie kann ich alle diese Bilder, in möglichst kurzer Zeit, in eine beliebige Größe verkleinern?

Gruß Matze

S - tefano 22. Aug 2003 12:19

Re: Bilder von gesamten Ordner verkleinern
 
In der Code Library findet sich was ganz nützliches.
Den Parameter "Dir" aber nicht falsch interpretieren. Als Dir musst du den Dateinamen übergeben. Naja, die anderen beiden sprechen ja für sich.
Der Code klappt so allerdings nur für .jpg, für Bitmaps musst du ihn ein wenig modifizieren.

Etwas ähnliches habe ich auch in meinem Thumbnailer (Links rulen einfach...) verwendet.

Bis dann,

S - tefano

Matze 22. Aug 2003 12:26

Re: Bilder von gesamten Ordner verkleinern
 
Danke, das schau ich mir mal an.

Gruß Matze

Matze 22. Aug 2003 12:33

Re: Bilder von gesamten Ordner verkleinern
 
Genau so etwas brauche ich, jedoch ist danach die Bildquallität so miserabel, das ich das nicht verwenden kann. :(
Kann man diese procedure verwenden, aber mit einer anderen Bildquallität ?

Matze 22. Aug 2003 14:04

Re: Bilder von gesamten Ordner verkleinern
 
Nochmal danke S - tefano!

Ich nehme jetzt deinen Vorschlag. Das geht ganz gut, solange die Bilder keine Screenshots mit Text sind, da man den Text sonst nicht mehr lesen kann (ist eigentlich logisch). :wink:

Gruß Matze

Matze 22. Aug 2003 14:59

Re: Bilder von gesamten Ordner verkleinern
 
Ich habe FocRacism's Code so umgeändert:

Code:
//Bildgröße ändern
procedure TForm1.ResizePicture(dir: string; width, height: integer);
var i:integer;
    bmp:TBitmap;
    jpeg:TJpegImage;
begin
   Jpeg:=TJpegImage.Create;
   try
   jpeg.LoadFromFile(dir);
    bmp:=TBitmap.Create;
      try
        If jpeg.width>jpeg.Height then
         begin
          bmp.width:=width;
          bmp.height:=height;
         end else
         begin
          bmp.width:=height;
          bmp.Height:=width;
         end;
        bmp.canvas.StretchDraw(Rect(0,0,bmp.width,bmp.height),jpeg);
        jpeg.assign(bmp);
      finally
       bmp.free;
      end;
        CreateDir(Edit2.Text);                  //Wieso geht das nicht??
        jpeg.SavetoFile(Edit2.Text);
      except
      end;
   finally
    jpeg.free;
   end;
end;
Wieso geht das an der gekennzeichneten Stelle nicht?

Gruß Matze

S - tefano 22. Aug 2003 15:24

Re: Bilder von gesamten Ordner verkleinern
 
Also für mich sieht das so aus, als würde in deinem Edit2.Text entweder ein Dateiname, oder ein Verzeichnisname stehen.
Eins von beiden wird mit einer der Funktionen CreateDir bzw. Savetofile bestimmt nicht zurechkommen.
Denn entweder versuchst du die Datei unter einem Dateinamen zu speichern, der nur einen Pfad enthält, oder du versuchst ein Verzeichnis mit einem String zu erstellen, der neben dem Pfad auch schon einen Dateinamen enthält.

Beschreib mal genauer, was für ein Fehler kommt und was in Edit2 drinsteht.

Bis dann,

S - tefano

Matze 22. Aug 2003 15:27

Re: Bilder von gesamten Ordner verkleinern
 
Du hast Recht!
Der Dateiname fehlt. :oops:

In Edit2 steht: D:\Bilder

Danke. :mrgreen:

Gruß Matze

Matze 22. Aug 2003 15:35

Re: Bilder von gesamten Ordner verkleinern
 
Jetzt hab ich's so gemacht, aber es geht immer noch nicht. :evil:

Code:
jpeg.SavetoFile(Edit2.Text+'\'+CheckListBox1.Items.Strings[j]);
In der CheckListBox stehen die Dateinamen.
Mit j zähle ich die Einträge der CheckListBox durch und falls sie angeklickt sind, werden sie verkleinert und gespeichert.

Kannst du mir da vielleicht auch helfen? :)

Gruß Matze

S - tefano 22. Aug 2003 15:44

Re: Bilder von gesamten Ordner verkleinern
 
Wie gesagt, auch hier wäre eine genauere Beschreibung von dem, was so passiert recht wertvoll... was genau geht denn nicht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr.
Seite 1 von 2  1 2      

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