Загрузка изображений, создание превью. Трабла в Ie

Discussion in 'PHP' started by NNNS, 22 Nov 2007.

  1. NNNS

    NNNS Elder - Старейшина

    Joined:
    26 May 2007
    Messages:
    44
    Likes Received:
    28
    Reputations:
    -5
    Проблема с созданием превью изображений в IE.
    В Mozilla Firefox все работает без траблем. Нужен хелп по устранению баги.

    При загрузке изобржения, оно сейвится в /images/
    Из загруженого изображения создается превью изображение.
    Имена файлов сохраняются в бд.
    В Фаерфоксе Все работает без проблем
    В ИЕ изображение загружается в /images/ и дальше дело не идёт.

    PHP:
    <?php
    #error_reporting(0);
    include_once("config.php");
    $id $_POST['id'];
    $id intval($id);
            function 
    makepic($fileinfo,$wwwdir)
        {
                    
    $allowed  = array ('gif','png','jpg');
                    
    $filename        trim($fileinfo['name'], "\x00..\x1F");
                    
    $tmpname        explode('.',$filename);                
                    
    $extension         $tmpname[count($tmpname)-1];
                    
    $allowed         in_array($extension,$allowed) ? true false ;
                    if (
    $allowed)
                    {
                if (
    extension_loaded('gd'))
                            {
                                    list(
    $width$height) = getimagesize($fileinfo['tmp_name']);
                                    
    $gdinfo        gd_info();
                    
    $image        imagecreatetruecolor($width$height);                                   
                                    if (
    $extension == 'gif' && $gdinfo['GIF Create Support'] )
                    {
           
                        
    $nimage        imagecreatefromgif($fileinfo['tmp_name']);                           
                        
    imagecopyresampled($image$nimage0000$width$height$width$height);
                        if (!
    imagegif($image$wwwdir.$fileinfo['name'], 80))
                                            {
                                                    return 
    false;
                                            }
                    }
                                    if (
    $extension == 'jpg' and $gdinfo['JPG Support'] )
                    {
                        
    $nimage        imagecreatefromjpeg($fileinfo['tmp_name']);                           
                        
    imagecopyresampled($image$nimage0000$width$height$width$height);
                        if (!
    imagejpeg($image$wwwdir.$fileinfo['name'], 80))
                                            {
                                                    return 
    false;
                                            }
                                    }
                    if (
    $extension == 'png' && $gdinfo['PNG Support'] == )
                    {
                        
    $nimage        imagecreatefrompng($fileinfo['tmp_name']);                           
                        
    imagecopyresampled($image$nimage0000$width$height$width$height);
                        if (!
    imagepng($image$wwwdir.$fileinfo['name'], 80))
                                            {
                                                    return 
    false;
                                            }
                    }
                                    return 
    true;
                            }
                            else
                            {
                                    return 
    true;
                            }
                    }
                    else
                    {
                            return 
    false;
                    }
                 
            }
            
           
            if (!empty(
    $_FILES))
            {
                    if (
    makepic($_FILES['userfile'],"$uploaddir"))
                    {
            
    $id == '1';
            list(
    $mus$typer) = explode("/",$_FILES['userfile']['type']);
            if (
    $typer =="jpeg" || $typer == "pjpeg" || $typer == "jpg") {$ras "jpg";}
            if (
    $typer == "gif" ) {$ras "gif";}                
                    
    rename($uploaddir.$_FILES['userfile']['name'],$uploaddir.$id.".".$ras);
                    
    $new_name $id.".".$ras;
    if (
    $typer=="jpeg" OR $typer=="jpg" OR $typer=="JPEG" OR $typer=="JPG")
    {
    thumb_jpeg($new_name);
    $image=$new_name;
    $thumbs="tmb_$image";
    $Link mysql_connect ($Host$User$Password);
    $Query "UPDATE $TableName SET image='$image', thumbs='$thumbs' where id='$id'";
    $Result mysql_db_query ($DBName$Query$Link);
    mysql_close ($Link);
    #echo "<html><head><meta http-equiv=\"refresh\" content=\"3; url=index.php\"></head><body></body></html>";
    chmod ("images/$image",0775);}else{
            if(
    $typer=="gif" OR $typer=="GIF")
            {
    thumb_gif($new_name);
            
    $image=$new_name;
            
    $thumbs="tmb_".$image;
            
    chmod ("thumbs/$thumbs",0775);
    $Link mysql_connect ($Host$User$Password);
    $Query "UPDATE $TableName SET image='$image', thumbs='$thumbs' where id='$id'";
    $Result mysql_db_query ($DBName$Query$Link);
    mysql_close ($Link);
    #echo "<html><head><meta http-equiv=\"refresh\" content=\"3; url=index.php\"></head><body></body></html>";

    } else {
    #print "<html><head><meta http-equiv=\"refresh\" content=\"0; url=index.php\"></head><body></body></html>";
    }
            }
        } else{
    #echo "<html><head><meta http-equiv=\"refresh\" content=\"0; url=index.php\"></head><body></body></html>";
    }
    }

    function 
    thumb_jpeg($image_name)
    {
    // f - имя файла
    // type - способ масштабирования
    // q - качество сжатия
    // src - исходное изображение
    // dest - результирующее изображение
    // w - ширниа изображения
    // ratio - коэффициент пропорциональности
    // str - текстовая строка

    if (!isset($q)) $q 75;

    $w 150;
    // создаём исходное изображение на основе исходного файла и опеределяем его размеры
    $src imagecreatefromjpeg("images/$image_name");
    $w_src imagesx($src);
    $h_src imagesy($src);
    // вычисление пропорций
    $ratio $w_src/$w;
    $w_dest round($w_src/$ratio);
    $h_dest round($h_src/$ratio);

    // создаём пустую картинку
    $dest imagecreatetruecolor($w_dest,$h_dest);
    imagecopyresized($dest$src0000$w_dest$h_dest$w_src$h_src);

    $dest imagecreatetruecolor($w,$w);

    // вырезаем квадратную серединку по x, если фото горизонтальное
    if ($w_src>$h_src)
    imagecopyresampled($dest$src00,round((max($w_src,$h_src)-min($w_src,$h_src))/2),0$w$wmin($w_src,$h_src), min($w_src,$h_src));

    // вырезаем квадратную верхушку по y,если фото вертикальное (хотя можно тоже серединку)
    if ($w_src<$h_srcimagecopyresampled($dest$src0000$w$w,min($w_src,$h_src), min($w_src,$h_src));

    // квадратная картинка масштабируется без вырезок
    if ($w_src==$h_srcimagecopyresampled($dest$src0000$w$w$w_src$w_src);


    // вывод картинки и очистка памяти
    ImageJPEG($dest,"thumbs/tmb_".$image_name,$q);
    imagedestroy($dest);
    imagedestroy($src); }

    function 
    thumb_gif($image_name)
    {
    // q - качество сжатия
    // src - исходное изображение
    // dest - результирующее изображение
    // w - ширниа изображения
    // ratio - коэффициент пропорциональности
    // str - текстовая строка

    if (!isset($q)) $q 75;

    $w 150;
    // создаём исходное изображение на основе исходного файла и опеределяем его размеры
    $src imagecreatefromgif("images/$image_name");
    $w_src imagesx($src);
    $h_src imagesy($src);
    // вычисление пропорций
    $ratio $w_src/$w;
    $w_dest round($w_src/$ratio);
    $h_dest round($h_src/$ratio);

    // создаём пустую картинку
    $dest imagecreatetruecolor($w_dest,$h_dest);
    imagecopyresized($dest$src0000$w_dest$h_dest$w_src$h_src);

    $dest imagecreatetruecolor($w,$w);

    // вырезаем квадратную серединку по x, если фото горизонтальное
    if ($w_src>$h_src)
    imagecopyresampled($dest$src00,round((max($w_src,$h_src)-min($w_src,$h_src))/2),0$w$wmin($w_src,$h_src), min($w_src,$h_src));

    // вырезаем квадратную верхушку по y,если фото вертикальное (хотя можно тоже серединку)
    if ($w_src<$h_srcimagecopyresampled($dest$src0000$w$w,min($w_src,$h_src), min($w_src,$h_src));

    // квадратная картинка масштабируется без вырезок
    if ($w_src==$h_srcimagecopyresampled($dest$src0000$w$w$w_src$w_src);


    // вывод картинки и очистка памяти
    imagegif($dest,"thumbs/tmb_".$image_name,$q);
    imagedestroy($dest);
    imagedestroy($src);
    }
           
    ?>
     
    3 people like this.
  2. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Картинка в базу попадает? Подкажи участок, который непосредственно выводит злополучную картинку.
     
  3. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    [x26]VOLAND, да всё верно... MySQL допускает такое написание, а между кавычек он вставляет значения переменных...