Venik, попробуй вот этот приём
PHP код:
<?php
// имя папки, где лежат картинки
$papka = "prikol";
// время выполнения сценария не ограничено
// если не сделать так, то при большом количестве
// картинок время одного процесса истечёт, что
// нам не надо, поэтому ставим set_time_limit(0);
set_time_limit(0);
// качество сохраняемой картинки в процентах от
// оригинала можете ставить от 0 до 100, это проценты.
// чем больше это число, тем с большим качеством
// сохранится новая картинка
$qulity = 70;
// максимальный размер стороны нового фото в пикселях
// все картинки приведёт к этому размеру, то есть
// сони все танут одинаковыми
$size_max = 600;
// подключает модуль GD динамически, если она не подключена
// если выдаст Нет файла библиотеки, то нет у вас модуля GD
$bibl_ext = dirname ($_SERVER['SCRIPT_FILENAME']).'/extensions/php_gd.dll';
if( !extension_loaded ('gd') and is_file($bibl_ext)){ dl ("extensions/php_gd.dll"); }
if( !extension_loaded ('gd')) { print "Нет файла библиотеки $bibl_ext"; exit;}
// вспомогательная функция, определяет тип файла
function TypeFile ($img_name){
$arr = GetImageSize ($img_name);
return $arr[2];
}
// вспомогательная функция, выводим в программу из
// фотографии графический объект
function LoadImage ($img_name){
if(TypeFile ($img_name)==2) { $im = ImageCreateFromJpeg($img_name); }
if (!$im){ return false; }
return $im;
}
// основная функция, которая уменьшит все фото в папке $path
function open_dir_and_small ( $path ) {
global $qulity, $size_max;
$dh = opendir ($path);
while($entry = readdir($dh)){
if($entry != "." and $entry != ".."){
$file = $path."/".$entry;
$old = LoadImage($file);
if ($old==false or preg_match ("~new~",$entry)){ continue; }
$w = ImageSX($old);
$h = ImageSY ($old);
if( preg_match ("/(.+)(\..+)/",$file,$arr)){
$path_new = $arr[1].'_new'.$arr[2];
if($w > $h){ $w_new = $size_max; $h_new = ceil($w_new * $h/$w); }
else { $h_new = $size_max; $w_new = ceil($h_new * $w/$h); }
$new = imageCreate($w_new, $h_new);
ImageCopyResized($new, $old, 0, 0, 0, 0, $w_new, $h_new, $w, $h);
imageJpeg($new, $path_new, $qulity);
imageDestroy($new);
print $path_new."<br>\n";
}
imageDestroy($old);
clearstatcache();
}
}
closedir($dh);
}
// применим функции и уменьшим все картинки в папке "prikol"
open_dir_and_small ( $papka );
?>
Значений качества не ставь на 100 - это глупо, так как визуально они не отличаются от 75 совершенно. но зато вес в 2 раза более