Le problème en fixant la taille en HTML ou CSS c'est que tu risques d'avoir un rendu très laid si la taille fixé ne correspond pas aux proportions de l'image affiché.
Je pense que le mieux est de créér les miniatures directement dans la bonne taille et Cyrano je vois pas trop pourquoi tu veux faire un système complexe d'interception de demande d'ffichage il n'y a que 500 images ça va plomber le serveur pendant 2 minutes maximum
Pour créer des miniature dans des bonnes dimensions il faut que tu détermines la taille max de ta nouvelle miniatures
$t_width_max = 200;
$t_height_max = 150;
que tu fasses un ratio des dimensions originales
list($width_orig, $height_orig) = getimagesize($fileTmpPath); // $fileTmpPath est ton image
$ratio_orig = $width_orig/$height_orig;
et ensuite il faut calculer les dimensions de la miniature en fonction de si elle est plus haute que large ou l'inverse. Et aussi prendre en compte le cas ou l'image de base est plus petite que la miniature donc :
if($width_orig < $t_width_max && $height_orig < $t_height_max) {
$t_height = $height_orig;
$t_width = $width_orig;
} elseif($height_orig > $width_orig) {
$t_ratio = $height_orig / $t_height_max;
$t_height = $t_height_max;
$t_width = $width_orig / $t_ratio;
} else {
$t_ratio = $width_orig / $t_width_max;
$t_width = $t_width_max;
$t_height = $height_orig / $t_ratio;
}
et enfin tu créé ta miniature ici $t_filePath est la destination finale pour créér ta miniature

et tout ça en fonction de l'extension de ta jolie image

que tu vas récuprer comme ça
$extension = strtolower(substr(strrchr($fileTmpPath, '.'), 1));
$t_image_p = imagecreatetruecolor($t_width, $t_height);
$t_quality = 80;
switch($extension)
{
case 'jpeg':
case 'jpg':
$t_image = imagecreatefromjpeg($fileTmpPath);
imagecopyresampled($t_image_p, $t_image, 0, 0, 0, 0, $t_width, $t_height, $width_orig, $height_orig);
imagejpeg($t_image_p, $t_filePath, $t_quality);
break;
case 'png':
$t_image = imagecreatefrompng($fileTmpPath);
imagecopyresampled($t_image_p, $t_image, 0, 0, 0, 0, $t_width, $t_height, $width_orig, $height_orig);
imagepng($t_image_p, $t_filePath, $t_quality);
break;
case 'gif':
$image = imagecreatefromgif($fileTmpPath);
imagecopyresampled($t_image_p, $t_image, 0, 0, 0, 0, $t_width, $t_height, $width_orig, $height_orig);
imagegif($t_image_p, $t_filePath, $t_quality);
break;
}
tu peux changer la qualité avec la variable $t_quality cependant 80 reste très correcte, si tu dois changer pour une miniature descend plutot cette valeur qu'autre chose

ça te permettre de gagner de la place un peu
met tout les morceaux de code à la suite et tu dois avoir le code complet je pense
