Не-не, в том-то и дело, что у меня CMS не стоит и прибегать к её помощи я не хочу.
Такого типа скрипты, на сколько я понял, реализуются встроенным в PHP GDLib.
Вот пример скрипта:
PHP код:
<?php
$papka = "photo";
set_time_limit(0);
$qulity = 100;
$size_max = 640;
$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;
}
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);
}
open_dir_and_small ( $papka );
?>
Вот примерно такой скрипт для массового уменьшения картинок мне и нужен (без задействования CMS и прочего).
Это, кстати говоря, единственный найденный мною скрипт, который уместился в 1 файле, действительно работает и работает
быстро. Я бы на нём и остановился, если бы не одно "но".
И вот в чём это "но" заключается...
...
вот оригинальное фото (чтобы лучше было видно - сохраните на компьютере)...
...а
вот уменьшенное скриптом фото.
Почему он так делает? Как будто пески времени, блин. Или на пастеризацию ещё похоже. Соглашусь, выглядит эффектно, но мне это абсолютно не нужно.
И, как мне кажется, ошибка кроется в самом скрипте, а не в чём либо другом. Ведь я пробовал ещё один скрипт - он хоть уменьшает и по одной картинке, но таким же способом - такого эффекта нет, всё выглядит отлично.
Подскажите, пожалуйста, в чём дело.
Здесь лежит сей скрипт с комментариями разработчика.