Programm zum Bilderverkleinern (brauche hilfe)

Friesi

Erfahrenes Mitglied
Hallo!
Ich wollte ein Programm schreiben das Bilder aus einem bestimmten Ordner auf eine Pixelgröße verkleinert!
also das z.b. alle bilder auf 50x50pixel verkleinert und mit dem Dateinamen: "NORMALERDATEINAME_small.jpg / .gif .u.s.w abspeichert!

nun meine frage :)
Da ich noch nicht solange mit Delphi arbeite wollte ich fragen wie ich die Bilder aus einem Verzeichnis auslesen kann, sie dann so verarbeite das sie verkleinert werden und dann wieder abgespeichert werden :)

hoffe mir kann einer helfen!

Ich bedanke mich schon mal im vorraus!
 

Dario Linsky

Erfahrenes Mitglied
eine ziemlich einfache methode wäre es, wenn du das entsprechende jpeg-file in ein 50x50 pixel grosses TImage lädst und an die grösse anpasst. dann kannst du glaub ich mit dem canvas vom image-objekt die neue grösse als bitmap speichern. ist dann aber erstmal kein jpeg mehr.


@arne: nicht schlagen, wenn's falsch ist. mit dem timage mach ich nicht so viel. :rolleyes:
 

Friesi

Erfahrenes Mitglied
hehe ja will es selber programmieren :)
irgendwann muss man auch mal was selber machen. sonst lernt man es nie :)

naja das mit dem TImage hört sich gut an!
aber geht das auch wenn man z.b. 100 bilder aufeinmal verkleinern will?! :)
 

znysk

Erfahrenes Mitglied
Ich glaube dein Problem ist es die ganzen dateien aus dem ordner heraus zu finden.

Ich habe es gerade versucht, und mit "Filelistbox" geschaft. unter win 3.1 hast du die 3 benötigten Komponenten DriveComboBox, DirectoryListBox, FileListBox, kannste ja dann unsichtbar machen.

mit der FileListBox kannst du dann in Schleifen arbeiten. die dateinamen hast du in
Code:
'TFileListBox.items[i]' (STRING) |i= 0...n-1 | n=TFileListBox.count.


mit listen lässt sich relativ einfach arbeiten.

PS.: du kannst die bilder ja der Reihe nach laden und speichern!
 

Dario Linsky

Erfahrenes Mitglied
klar geht das. du müsstest halt einfach nur die dateinamen auswählen und dann nacheinander (mit einer schleife) in das timage laden und wieder speichern. wird zwar komisch aussehen, aber sollte klappen.
noch einfacher ist das natürlich, wenn die alle im gleichen verzeichnis liegen und optimalerweise noch von 001 bis 100 durchnummeriert sind. ;)

in das image laden kannst du die mit Image1.Picture.LoadFromFile(dateiname);
 

Dario Linsky

Erfahrenes Mitglied
znysk hat gesagt.:
Ich glaube dein Problem ist es die ganzen dateien aus dem ordner heraus zu finden.

Ich habe es gerade versucht, und mit "Filelistbox" geschaft. unter win 3.1 hast du die 3 benötigten Komponenten DriveComboBox, DirectoryListBox, FileListBox, kannste ja dann unsichtbar machen.

mit der FileListBox kannst du dann in Schleifen arbeiten. die dateinamen hast du in '
Code:
TFileListBox.items[i]' (STRING) |i= 0...n-1 | n=TFileListBox.count.


mit listen lässt sich relativ einfach arbeiten.

PS.: du kannst die bilder ja der Reihe nach laden und speichern!

hm. filelistbox... nicht so schön. ;)
guck dich mal hier um. es gibt viel elegantere wege, an dateinamen aus einem bestimmten verzeichnis zu kommen. :)
 

Friesi

Erfahrenes Mitglied
@znysk
hört sich gut an .. verstanden hab ich nur nicht viel :)
also die namen Filelistbox und so sagen mir schon was! nur weis ich nicht wie ich die anwenden muss! gibt es da vielleicht tuts?!

@asphyxia
also die Bilder liegen in einem Verzeichnis :)
und sind auch meistens von NAME001-NAME00? benannt!

dürfte also kein problem sein :)
nur welchen schleifentyp nehme ich ambesten?!
 

Dario Linsky

Erfahrenes Mitglied
welchen schleifentyp du nimmst, bleibt dir letztenendes überlassen. am sinnvollsten wäre allerdings eine for-schleife, weil du da einfach den dateinamen hochzählen kannst. :)
 

Friesi

Erfahrenes Mitglied
ok nehm ich die :)
mir fällt da gerade auf das wir in der schule echt nichts lernen :)
die SwissDelp... seite ist gut :) man muss jetzt nur noch das finden was man brauch :) *gg*