![]() |
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 |
Re: Bilder von gesamten Ordner verkleinern
In der
![]() 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 ![]() Bis dann, S - tefano |
Re: Bilder von gesamten Ordner verkleinern
Danke, das schau ich mir mal an.
Gruß Matze |
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 ? |
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 |
Re: Bilder von gesamten Ordner verkleinern
Ich habe FocRacism's Code so umgeändert:
Code:
Wieso geht das an der gekennzeichneten Stelle nicht?
//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; Gruß Matze |
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 |
Re: Bilder von gesamten Ordner verkleinern
Du hast Recht!
Der Dateiname fehlt. :oops: In Edit2 steht: D:\Bilder Danke. :mrgreen: Gruß Matze |
Re: Bilder von gesamten Ordner verkleinern
Jetzt hab ich's so gemacht, aber es geht immer noch nicht. :evil:
Code:
In der CheckListBox stehen die Dateinamen.
jpeg.SavetoFile(Edit2.Text+'\'+CheckListBox1.Items.Strings[j]);
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 |
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?
|
Re: Bilder von gesamten Ordner verkleinern
Der Ordner wird ordnungsgemäß angelegt, aber es wird kein Bild darin gespeichert.
|
Re: Bilder von gesamten Ordner verkleinern
Falls es dich noch interessiert:
So überprüfe ich, welche Bilder angeklickt wurden:
Code:
procedure TForm1.GroesseaendernClick(Sender: TObject);
var j:integer; begin CreateDir(Edit2.Text); for j:=0 to CheckListBox1.Count-1 do begin if CheckListBox1.Checked[j]=true then ResizePicture(Edit1.Text+'\'+CheckListBox1.Items.Strings[j],640, 480) end; end; |
Re: Bilder von gesamten Ordner verkleinern
So gut kenn ich mich mit den CheckListen nich aus, aber zum Experimentieren kannst du mal die Abfrage rausnehmen, ob das Item gecheckt ist.
Also einfach drauflos Speichern ohne zu gucken obs auch soll. Wenns dann immernoch nich gespeichert wird... hm. Aber wenn doch, dann muss du anders abfragen. |
Re: Bilder von gesamten Ordner verkleinern
Speichern kann ich schon, aber nur, wenn ich die alten Dateien überschreibe.
|
Re: Bilder von gesamten Ordner verkleinern
Ich hab's rausbekommen. :D
Ich hab die Variable j nur beides Mal lokal deklariert. Wenn ich sie global deklariere, dann geht es. :hello: @S - tefano: Dir nochmals: Vielen Dank!! Gruß Matze |
Re: Bilder von gesamten Ordner verkleinern
Hey, kein Problem :wink:
Danke auch an dich, dass du die endgültige Lösung gepostet hast... |
Re: Bilder von gesamten Ordner verkleinern
Ist doch selbstverständlich, dass ich die Lösung poste, andere wollen ja auch wissen, woran es lag. :wink:
Gruß Matze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz