Hi,
für eine komplette Lösung habe ich jetzt keine Zeit, aber wenn Du selber mal suchen (und experimentieren) willst, dann schau mal in der Delphi-Hilfe unter TBitmap und den dazugehörigen Eigenschaften LoadFromFile und SaveToFile.
Zum Auslesen eines Verzeichnisses mach' Dich über FindFirst, FindNext und FindClose kundig.
Bilder verkleinern kannst Du mit TCanvas.StretchDraw(), wobei TCanvas wieder eine Eigenschaft von TBitmap ist.
Mit Bordmitteln geht das allerdings nur mit bmp- und jpg-Dateien. Für Gifs und andere Formate bist Du auf externe Komponenten angewiesen.