Показать сообщение отдельно
Старый 20.04.2008, 17:21   #4 (permalink)
Новичок
 
Аватар для Venik
 
Специализация: Новичок
Регистрация: 20.04.2008
Адрес: Россия, Москва, СЗАО
Сообщений: 5
Репутация: 0
Номер ICQ 432143
Отправить сообщение для Venik с помощью Skype™
По умолчанию Ответ: Массовое уменьшение картинок

Не-не, в том-то и дело, что у меня 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$old0000$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 файле, действительно работает и работает быстро. Я бы на нём и остановился, если бы не одно "но".
И вот в чём это "но" заключается...
...вот оригинальное фото (чтобы лучше было видно - сохраните на компьютере)...
...а вот уменьшенное скриптом фото.
Почему он так делает? Как будто пески времени, блин. Или на пастеризацию ещё похоже. Соглашусь, выглядит эффектно, но мне это абсолютно не нужно.
И, как мне кажется, ошибка кроется в самом скрипте, а не в чём либо другом. Ведь я пробовал ещё один скрипт - он хоть уменьшает и по одной картинке, но таким же способом - такого эффекта нет, всё выглядит отлично.
Подскажите, пожалуйста, в чём дело.
Здесь лежит сей скрипт с комментариями разработчика.
__________________
"Господи, перезагрузи этот мир..." - молитва программиста.
Venik вне форума   Ответить с цитированием