Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблема с созданием preview (gdlib)
 
 автор: LimP   (27.12.2005 в 18:03)   письмо автору
 
 

доброго времени суток. пишу галерею. нужно делать небольшие 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/. помогите, как исправить все, чтобы работало?

   
 
 автор: cheops   (27.12.2005 в 23:11)   письмо автору
 
   для: LimP   (27.12.2005 в 18:03)
 

А никаких сообщений в окно браузера не выводится во время загрузки?

   
 
 автор: LimP   (28.12.2005 в 09:02)   письмо автору
 
   для: cheops   (27.12.2005 в 23:11)
 

во время загрузки выводятся только сообщения о том, что файл загружен и о размере файла, короче все, как должно быть, а сообщений о "call to undefined function....." нет. короче gdlib установлен исправно. все работает, файл основной загружается а превью не создается, что делать?

   
 
 автор: XPraptor   (28.12.2005 в 12:14)   письмо автору
 
   для: LimP   (28.12.2005 в 09:02)
 

А доступ к папке есть? Может он просто не может там файл создать маленький в папке? Разрешение 777 поставлено?

   
 
 автор: LimP   (29.12.2005 в 13:28)   письмо автору
 
   для: XPraptor   (28.12.2005 в 12:14)
 

господа, я так понимаю, ошибок в коде нет?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования