Die ausgelieferten Bild-Daten müssen dazu nicht irgendwo hinkopiert werden, sondern werden mit readfile() direkt auf die Anforderung von "bildleser.php?zielbild=wasauchimmer.jpg" durch den Browser ausgeliefert. Das Umkopieren und das damit verbundene Garbage-Collection-Problem entfällt. Nur die angesprochene Prüfung auf .. und / in dem statt "wasauchimmer.jpg" übergebenen Wert sollte eingebaut werden.
Auch für dich noch einmal:
<html>
<head>
<title>Galeria</title>
</head>
<body>
<img src="bild1.jpg">
<img src="bild2.jpg">
<img src="bild3.jpg">
<img src="bild4.jpg">
</body>
</html>
Sowas möchte er ausgeben, das geht nicht mit readfile().
Direkte Bildpfade gehen auch nicht, weil oberhalb von root.