<?php

const PFAD_FOTOS = __DIR__ . '/fotos/';
const PFAD_MINIATUREN = __DIR__ . '/miniaturen/';
const MAXIMALE_BREITE = 100;

$dateiname = basename($_GET['dateiname']);
$dateipfadFoto = PFAD_FOTOS . $dateiname;
$dateipfadMiniatur = PFAD_MINIATUREN . $dateiname;

if (!file_exists($dateipfadMiniatur)) {

    // Abmessungen des Fotos ermitteln
    list($breite, $hoehe) = getimagesize($dateipfadFoto);

    // Gewünschte Abmessungen der Miniatur berechnen
    $neueBreite = MAXIMALE_BREITE;
    $faktor = MAXIMALE_BREITE / $breite;
    $neueHoehe = round($faktor * $hoehe);

    // Bild skalieren
    $foto = imagecreatefromjpeg($dateipfadFoto);
    $miniatur = imagecreatetruecolor($neueBreite, $neueHoehe);
    imagecopyresampled($miniatur, $foto, 0, 0, 0, 0, $neueBreite, $neueHoehe, $breite, $hoehe);

    // Miniatur auf Festplatte speichern ("Caching")
    imagejpeg($miniatur, $dateipfadMiniatur, 90);
}

// Gespeicherte Miniatur von Festplatte laden und an den Browser senden
header('Content-Type: image/jpeg');
readfile($dateipfadMiniatur);