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

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
467
Реакции
16
Здравствуйте дорогие знатоки!
Как сделать в данном коде что бы изображение конвертировалось в 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, $im, 0, 0, round((max($w_src,$h_src)-min($w_src,$h_src))/2), 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
                }
                // вырезаем квадратную верхушку по y,
                if ($w_src < $h_src){
                    imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
                }
                // квадратная картинка масштабируется без вырезок
       
                if ($w_src == $h_src){
                    imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $h_src);
                }
 
            break;
                    //***************************** 2
            case "2" :
                $prop = $w_src/$h_src;
                $h = $w/$prop;
                $dest = imagecreatetruecolor($w,$h);
                imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $h, $w_src, $h_src);
            break;
   
        }
 
 
 
 
       
        $random = rand(1000000, 9999999);
        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>
 
Добавить после 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, то просто добавить условие
 
ничего не изменилось:nezn:
 
Назад
Сверху