|
|
|
| доброго времени суток. пишу галерею. нужно делать небольшие preview размером $x * $y имеется вот такая функция:
...
function resizeimg($name,$filename, $w, $h, $sm)
{
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// зальём его белым цветом
imagefill($dest_img, 0, 0, 0xFFFFFF);
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// здесь вычисляем размеры, чтобы при масштабировании сохранились
// 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]);
}
// исходя из того какой тип имеет изображение
// выбираем функцию создания
switch ($size_img['mime'])
{
// если тип файла JPEG
case 'image/jpeg':
// создаем jpeg из файла
$src_img = imagecreatefromjpeg($filename);
$ext="jpg";
break;
// если тип файла GIF
case 'image/gif':
// создаем gif из файла
$src_img = imagecreatefromgif($filename);
$ext="gif";
break;
}
// масштабируем изображение функцией 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]);
// в зависимости от типа файла выбиpaем функцию сохранения в файл
switch ($size_img['mime'])
{
case 'image/jpeg':
// сохраняем в файл small.jpg
imagejpeg($dest_img, $sm."/sm_".$name.".".$ext);
break;
case 'image/gif':
// сохраняем в файл small.gif
imagegif($dest_img, $sm."/sm_".$name.".".$ext);
break;
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}
...
|
и кусочек файла-обработчика:
...
if ($flag1)
{
$path = "../images/".$_FILES['file1']['name'];
$sm = "../images/sm";
if($_FILES["file1"]["size"] >$size_file)
{
err("Размер первого файла превышает (Large size!) ".(int)$size_file."кб");
exit;
}
if(copy($_FILES["file1"]["tmp_name"], "../images/".$_FILES["file1"]["name"]))
{
err("Первый файл успешно загружен (file upload)");
err("Размер первого файла (file size): ".(int)($_FILES["file1"]["size"]/1024)."кб<br>");
$name = basename ($_FILES["file1"]["name"],".jpg");
$name = basename ($name,".JPG");
$name = basename ($name,".JPg");
$name = basename ($name,".JpG");
$name = basename ($name,".jPG");
$name = basename ($name,".Jpg");
$name = basename ($name,".jPg");
$name = basename ($name,".jpG");
$size_img = getimagesize($path);
$x = $y*$size_img[0]/$size_img[1];
$nama = substr($path,10);
$mnmk = trim(htmlspecialchars($_POST['title1']));
$query = mysql_query("insert into gallery_pics values (0,".$HTTP_POST_VARS['id_gallery'].",'$mnmk','$nama',now());");
resizeimg($name , $path, $x, $y, $sm);
}
} else err("Ошибка при загрузке первого файла<br>");
...
|
результатом выполнения данного скрипта является загрузка основного файла на сервер, но preview он не создает как должен, маленького изображения в папке images/sm/. помогите, как исправить все, чтобы работало? | |
|
|
|
|
|
|
|
для: LimP
(27.12.2005 в 18:03)
| | А никаких сообщений в окно браузера не выводится во время загрузки? | |
|
|
|
|
|
|
|
для: cheops
(27.12.2005 в 23:11)
| | во время загрузки выводятся только сообщения о том, что файл загружен и о размере файла, короче все, как должно быть, а сообщений о "call to undefined function....." нет. короче gdlib установлен исправно. все работает, файл основной загружается а превью не создается, что делать? | |
|
|
|
|
|
|
|
для: LimP
(28.12.2005 в 09:02)
| | А доступ к папке есть? Может он просто не может там файл создать маленький в папке? Разрешение 777 поставлено? | |
|
|
|
|
|
|
|
для: XPraptor
(28.12.2005 в 12:14)
| | господа, я так понимаю, ошибок в коде нет? | |
|
|
|