|
|
|
| Народ, надо почками менять характеристики изображений(размер, цвет), готовых решений я не нашол. Решил сам написать скрип. PHP знаю на уровне новичок. Скрипт работает, но почему-то только 6 картинок. И пишет мол простой в 30 сек пройден.
<?php
$ndirct = "large/";
$nhdl=opendir($ndirct);
while ($nfile = readdir($nhdl))
{
if (($nfile!=".")&&($nfile!=".."))
{
$na[] = $nfile;
}
}
closedir($nhdl);
if (sizeof($na)!=0)
{
rsort($na);
$vsego=sizeof($na);
while ($vsego >=31)
{
$size_img = getimagesize("large/".$na[$i]);
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
$h=300;
$w=$h*$size_img[0]/$size_img[1];
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// зальём его белым цветом
imagefill($dest_img, 0, 0, 0xFFFFFF);
// получим размеры исходного изображения
// здесь вычисляем размеры, чтобы при масштабировании сохранились
// 1. Пропорции исходного изображения
// 2. Исходное изображение полностью помещалось на маленькой копии
// (не обрезалось)
if ($src_ratio>$ratio)
{
$old_h=$size_img[1];
$size_img[1]=floor($size_img[0]/$ratio);
$old_h=floor($old_h*$h/$size_img[1]);
}
else
{
$old_w=$size_img[0];
$size_img[0]=floor($size_img[1]*$ratio);
$old_w=floor($old_w*$w/$size_img[0]);
}
$src_img = imagecreatefromjpeg("large/".$na[$i]);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
imagefilter($dest_img,IMG_FILTER_GRAYSCALE);
// в зависимости от типа файла выбирвем функцию сохранения в файл
switch ($size_img['mime'])
{
case 'image/jpeg':
// сохраняем в файл small.jpg
imagejpeg($dest_img,"small/".$na[$i]);
break;
case 'image/gif':
// сохраняем в файл small.gif
imagejpeg($dest_img,"small/".$na[$i]);
break;
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
$i++;
}
#for close
}else{
echo ("Нет файлов");
die;
}
?>
|
Как быть?? где проблема?? | |
|
|
|
|
|
|
|
для: Hin
(16.03.2006 в 18:05)
| | Не очень понятна фраза " надо почками менять характеристики изображений". Под почками что имеется ввиду? | |
|
|
|
|
|
|
|
для: cheops
(16.03.2006 в 22:18)
| | Под почками имелись в виду пачки, наверное.
А автора спасет set_time_limit ( int seconds ) , Опять же , наверное. | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 22:20)
| | Именно пачками, а что это за set_time_limit ( int seconds ), и где его писать?? | |
|
|
|
|
|
|
|
для: Hin
(17.03.2006 в 16:07)
| | Можно в начале | |
|
|
|
|
|
|
|
для: Hin
(17.03.2006 в 16:07)
| | Это стандартная функция php.
Её писать не нужно, она уже написана разработчиками. | |
|
|
|
|
|
|
|
для: Trianon
(17.03.2006 в 16:33)
| | И какое значение поставить?? Извените за глупость, я новичек в PHP. | |
|
|
|
|
|
|
|
для: Hin
(17.03.2006 в 16:38)
| | Наверное, судя по тому, что внутри скобок написано seconds, то количество секунд, которое Вы хотите, чтобы скрипт работал. | |
|
|
|