|
|
|
| Есть функция уменьшения размера фотографии!
function resizeimg($filename, $smallimage, $w, $h)
{
$ratio = $w/$h;
$size_img = getimagesize($filename);
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
$src_ratio=$size_img[0]/$size_img[1];
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
$dest_img = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img, $smallimage);
else if ($size_img[2]==1) imagegif($dest_img, $smallimage);
else if ($size_img[2]==3) imagepng($dest_img, $smallimage);
imagedestroy($dest_img);
imagedestroy($src_img);
if (!file_exists($smallimage))
{ return false; } else { return true; }
}
|
передаю данные:
resizeimg('temp/000.jpg', 'temp/000_s.jpg', 1000, 1000)
|
Файл temp/000.jpg на сервере точно есть, а вот второй не создаётся, хотя функция возвращает true!
Куда девается файл и как в функции file_exists его находит не понятно! | |
|
|
|
|
автор: ! (30.08.2009 в 18:00) |
|
|
для: QestNone
(30.08.2009 в 17:12)
| | Если temp в пределах DOCUMENT ROOT, то можно выдать ссылку, по ней поймёшь где изображение.
<?php
$url = preg_replace('#^' . preg_quote($_SERVER['DOCUMENT_ROOT'], '#') . '#', '', realpath($smallimage));
echo '<a href="' . $url . '">Кликни меня</a>'; exit;
|
Этот код поставь перед resizeimg().
Чудес не бывает, скорее всего либо в FTP-менеджере список файлов не обновился и ты не увидел, либо перепутал папку temp. | |
|
|
|
|
автор: ! (30.08.2009 в 18:05) |
|
|
для: !
(30.08.2009 в 18:00)
| | >Этот код поставь перед resizeimg()
Ну я имел ввиду перед return этой функции, конечно.
> $url = preg_replace('#^' . preg_quote($_SERVER['DOCUMENT_ROOT'], '#') . '#', '', realpath($smallimage));
Мудрено, абсолютный адрес необязателен, можешь просто
<?php
echo '<a href="' . $smallimage . '">Кликни меня</a>';
|
| |
|
|
|
|
|
|
|
для: QestNone
(30.08.2009 в 17:12)
| | А вывод сообщений конечно отключен? | |
|
|
|
|
|
|
|
для: sim5
(30.08.2009 в 18:05)
| | ТАК! все немного поменялось!
ошибка была в функции, точнее в этой строчке:
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
|
т.к. фото которое я изменял было меньше 1000/1000, которые я ставил, то функция всегда выводила true! | |
|
|
|
|
|
|
|
для: QestNone
(30.08.2009 в 18:29)
| | Если проблемы с путями (оносительно скрипта), то вы получите сообщение. Если проблемы с доступом, то вы тоже получите сообщение. Сам же скрипт создаст вашу копию, при условии, что нет проблем с двумя первыми замечаниями. Кстати, зачем имя у папки такое имя - temp, она у вас временная, только лишь для вышеуказанной операции? | |
|
|
|
|
автор: ! (30.08.2009 в 18:38) |
|
|
для: QestNone
(30.08.2009 в 18:29)
| | Так-с, по-моему Вы код запускаете один, а редактируете другой, ибо "1" оно может выводить, если функция true возвращает, т.е. echo true; выведет "1" как раз.
В общем, разберитесь что именно Вы редактируете, какую-то именно папку Вы смотрите. | |
|
|
|
|
|
|
|
для: !
(30.08.2009 в 18:38)
| | ТАК! все немного поменялось!
ошибка была в функции, точнее в этой строчке:
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
т.к. фото которое я изменял было меньше 1000/1000, которые я ставил, то функция всегда выводила true! | |
|
|
|
|
|
|
|
для: !
(30.08.2009 в 18:38)
| | он ошибся в этой строчке
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
надо заменить на
if (($size_img[0]<$w) && ($size_img[1]<$h)) return false; | |
|
|
|