Поправка кода

Тема в разделе "Как сделать...", создана пользователем vave, 14 июл 2012.

  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    374
    Симпатии:
    15
    Здравствуйте дорогие знатоки!
    Как сделать в данном коде что бы изображение конвертировалось в png с прозрачным фоном?

    на данный момент конвертируется в jpg с черным фоном.


    PHP:
    <?php
    include_once("bd.php");
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Изменение данных <?php echo $login?></title>
    </head>
    <body>
    <?php
     
    ////////Изменение аватары
     
    if (isset($_FILES['fupload']['name'])){ //отправлялась ли переменная
     
        
    if (empty($_FILES['fupload']['name']) AND $_FILES['fupload']['name'] == ''){
     
            
    $noAvatar "noAvatar.jpg";//изображение если пользователь не загрузил свое
            
    $result mysql_query("SELECT avatar FROM users WHERE id='$id_user'");//извлекаем текущий аватар
            
    $avatarka mysql_fetch_array($result);
     
            if (
    $avatarka['avatar'] != $noAvatar) {//если аватар был стандартный, то не удаляем его, ведь у на одна картинка на всех.
                
    unlink ('avatars/'.$avatarka['avatar']);
            }
     
        }
     
        else{
            
    //иначе - загружаем изображение пользователя для обновления
            
    $path_to_90_directory 'avatars/';//папка, куда будет загружаться начальная картинка и ее сжатая копия
       
            
    if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
                
    {
               
                    
    $filename $_FILES['fupload']['name'];
                    
    $source $_FILES['fupload']['tmp_name'];
                    
    $target $path_to_90_directory $filename;
                    
    move_uploaded_file($source$target);//загрузка оригинала в папку $path_to_90_directory
     
                
    if(preg_match('/[.](GIF)|(gif)$/'$filename)) {
                
    $im imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif
                
    }
                if(
    preg_match('/[.](PNG)|(png)$/'$filename)) {
                
    $im imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png
                
    }
       
                if(
    preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/'$filename)) {
                    
    $im imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg
                
    }
       
            
    //СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru
     
     
     
     
     
            
    $w 120;  // ширина изображения
     
            
    $quality 100//Качество создаваемого изображения max 100
           
            
    $w_src imagesx($im); //вычисляем ширину
            
    $h_src imagesy($im); //вычисляем высоту изображения
     
            //Создавать квадратное изображение $rezim = 1
            //Создать изображение пропорционально оригиналу $rezim = 2
     
            
    $rezim 1;
     
            switch (
    $rezim){
                    
    //**************************** 1
                
    case "1" :
           
                    
    // создаём пустую квадратную картинку
                    // важно именно truecolor!, иначе будем иметь 8-битный результат
                    
    $dest imagecreatetruecolor($w,$w);
     
                    
    // вырезаем квадратную серединку по x, если фото горизонтальное
           
                    
    if ($w_src $h_src){
                        
    imagecopyresampled($dest$im00round((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_src){
                        
    imagecopyresampled($dest$im0000$w$wmin($w_src,$h_src), min($w_src,$h_src));
                    }
                    
    // квадратная картинка масштабируется без вырезок
           
                    
    if ($w_src == $h_src){
                        
    imagecopyresampled($dest$im0000$w$w$w_src$h_src);
                    }
     
                break;
                        
    //***************************** 2
                
    case "2" :
                    
    $prop $w_src/$h_src;
                    
    $h $w/$prop;
                    
    $dest imagecreatetruecolor($w,$h);
                    
    imagecopyresampled($dest$im0000$w$h$w_src$h_src);
                break;
       
            }
     
     
     
     
           
            
    $random rand(10000009999999);
            
    imagejpeg($dest$path_to_90_directory.$random.".jpg"$quality);//сохраняем изображение формата jpg в нужную папку
     
            
    $avatar $random.".jpg";//заносим в переменную путь до аватара.
     
            
    $delfull $path_to_90_directory.$filename;
            
    unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен.
     
            
    $result mysql_query("SELECT avatar FROM users WHERE id='$id_user'");//извлекаем текущий аватар пользователя
            
    $avatarka mysql_fetch_array($result);
     
            if (
    $avatarka['avatar'] != $noAvatar) {//если аватар был стандартный, то не удаляем его, ведь у на одна картинка на всех.
                
    unlink ('avatars/'.$avatarka['avatar']);
            }
            }
            else{
                
    //в случае несоответствия формата, выдаем соответствующее сообщение
                
    exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
            }
     
        }
     
     
        
    $up mysql_query("UPDATE users SET avatar='$avatar' WHERE id='$id_user'");//обновляем аватар в базе
        
    if ($up == true) {//если верно, то отправляем на личную страничку
            
    echo "<meta http-equiv='Refresh' content='0; URL=edit.php?id=".$id_user."'>";
        }
     
    }
     
    ////////Изменение имени
     
    else if (isset($_POST['name'])){//Если существует имя
        
    $name $_POST['name'];
     
     
        if (
    $name == '') {
            exit(
    "Вы не ввели имя<br><a href='edit.php'>Вернуться назад</a>");
        }
     
        
    $up mysql_query("UPDATE users SET name_user='$name' WHERE id='$id_user'");//обновляем имя
        
    if ($up == true) {
            echo 
    "<meta http-equiv='Refresh' content='0; URL=edit.php?id=".$id_user."'>";
        }
    }
     
    ////////Изменение фамилии
     
    else if (isset($_POST['lastname'])){//Если существует фамилия
        
    $lastname $_POST['lastname'];
        
    $lastname stripslashes($lastname);
        
    $lastname htmlspecialchars($lastname);
        
    $lastname trim($lastname);//удаляем все лишнее
     
        
    if ($lastname == '') {
            exit(
    "Вы не ввели фамилию<br><a href='edit.php'>Вернуться назад</a>");
        }
     
        
    $up mysql_query("UPDATE users SET lastname='$lastname' WHERE id='$id_user'");//обновляем фамилию
        
    if ($up=='TRUE') {//если верно, то обновляем его в сессии
            
    $_SESSION['lastname'] = $lastname;
            echo 
    "<meta http-equiv='Refresh' content='0; URL=edit.php?id=".$id_user."'>";
        }
    }
     
     
     
    else if (isset(
    $_POST['home'])){//Если существует фамилия
        
    $home $_POST['home'];
     
     
        if (
    $home == '') {
            exit(
    "Вы не ввели страну<br><a href='edit.php'>Вернуться назад</a>");
        }
     
        
    $up mysql_query("UPDATE users SET home='$home' WHERE id='$id_user'");//обновляем страну
        
    if ($up == true) {
            echo 
    "<meta http-equiv='Refresh' content='0; URL=edit.php?id=".$id_user."'>";
        }
    }
     
     
     
     
    ////////Изменение страны
     
    else if (isset($_POST['about'])){//Если существует фамилия
        
    $about $_POST['about'];
     
     
        if (
    $about == '') {
            exit(
    "Вы не ввели страну<br><a href='edit.php'>Вернуться назад</a>");
        }
     
        
    $up mysql_query("UPDATE users SET about='$about' WHERE id='$id_user'");//обновляем страну
        
    if ($up == true) {
            echo 
    "<meta http-equiv='Refresh' content='0; URL=edit.php?id=".$id_user."'>";
        }
    }
     
     
    ////////Изменение страны
     
    else if (isset($_POST['services'])){//Если существует фамилия
        
    $services $_POST['services'];
     
     
        if (
    $services == '') {
            exit(
    "Вы не ввели страну<br><a href='edit.php'>Вернуться назад</a>");
        }
     
        
    $up mysql_query("UPDATE users SET services='$services' WHERE id='$id_user'");//обновляем страну
        
    if ($up == true) {
            echo 
    "<meta http-equiv='Refresh' content='0; URL=edit.php?id=".$id_user."'>";
        }
    }
     
     
    ////////Изменение страны
     
    else if (isset($_POST['photos'])){//Если существует фамилия
        
    $photos $_POST['photos'];
     
     
        if (
    $photos == '') {
            exit(
    "Вы не ввели страну<br><a href='edit.php'>Вернуться назад</a>");
        }
     
        
    $up mysql_query("UPDATE users SET photos='$photos' WHERE id='$id_user'");//обновляем страну
        
    if ($up == true) {
            echo 
    "<meta http-equiv='Refresh' content='0; URL=edit.php?id=".$id_user."'>";
        }
    }
     
     
    ////////Изменение страны
     
    else if (isset($_POST['contacts'])){//Если существует фамилия
        
    $contacts $_POST['contacts'];
     
     
        if (
    $contacts == '') {
            exit(
    "Вы не ввели страну<br><a href='edit.php'>Вернуться назад</a>");
        }
     
        
    $up mysql_query("UPDATE users SET contacts='$contacts' WHERE id='$id_user'");//обновляем страну
        
    if ($up == true) {
            echo 
    "<meta http-equiv='Refresh' content='0; URL=edit.php?id=".$id_user."'>";
        }
    }
     
     
    ////////Изменение страны
     
    else if (isset($_POST['slogan'])){//Если существует фамилия
        
    $slogan $_POST['slogan'];
     
     
        if (
    $slogan == '') {
            exit(
    "Вы не ввели страну<br><a href='edit.php'>Вернуться назад</a>");
        }
     
        
    $up mysql_query("UPDATE users SET slogan='$slogan' WHERE id='$id_user'");//обновляем страну
        
    if ($up == true) {
            echo 
    "<meta http-equiv='Refresh' content='0; URL=edit.php?id=".$id_user."'>";
        }
    }
     
     
     
     
     
     
    ?>
    </body>
    </html>
     
  2. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Добавить после 1й строчки вторую
    PHP:
    $im imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png
    imagesavealpha($im,true);
    Затем строчку
    PHP:
    imagejpeg($dest$path_to_90_directory.$random.".jpg"$quality);//сохраняем изображение формата jpg в нужную папку
    заменить на
    PHP:
    imagepng($dest$path_to_90_directory.$random.".png");//сохраняем изображение формата png в нужную папку
    Только после этого все изображения, независимо от исходного, будут сохраняться в png, если нужно чтоб jpg и gif конвертировались в jpg, то просто добавить условие
     
  3. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    374
    Симпатии:
    15
    ничего не изменилось:nezn: