this is a script which loops trough a directory that is currently set to "files" and resizes all images with respecting the image ratio
<?php
$target_width = 800;
$target_height = 600;
if (ob_get_level() == 0) ob_start();
if ($handle = opendir('files/')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$destination_path = './files/';
$target_path = $destination_path . basename($file);
$extension = pathinfo($target_path);
$allowed_ext = "jpg, gif, png, bmp, jpeg, JPG";
$extension = $extension[extension];
$allowed_paths = explode(", ", $allowed_ext);
$ok = 0;
for($i = 0; $i < count($allowed_paths); $i++) {
if ($allowed_paths[$i] == "$extension") {
$ok = "1";
}
}
if ($ok == "1") {
if($extension == "jpg" || $extension == "jpeg" || $extension == "JPG"){
$tmp_image=imagecreatefromjpeg($target_path);
}
if($extension == "png") {
$tmp_image=imagecreatefrompng($target_path);
}
if($extension == "gif") {
$tmp_image=imagecreatefromgif($target_path);
}
$width = imagesx($tmp_image);
$height = imagesy($tmp_image);
$imgratio = ($width / $height);
if ($imgratio>1) {
$new_width = $target_width;
$new_height = ($target_width / $imgratio);
} else {
$new_height = $target_height;
$new_width = ($target_height * $imgratio);
}
$new_image = imagecreatetruecolor($new_width,$new_height);
ImageCopyResized($new_image, $tmp_image,0,0,0,0, $new_width, $new_height, $width, $height);
imagejpeg($new_image, $target_path);
$image_buffer = ob_get_contents();
ImageDestroy($new_image);
ImageDestroy($tmp_image);
echo " $file resized to $new_width x $new_height <br> \n";
echo str_pad('',4096)."\n";
ob_flush();
flush();
}
}
}
closedir($handle);
echo "Done.";
ob_end_flush();
}
?>