Изображение png

301
.
В общем как сделать чтобы изображение в формате png сохранялось на прозрачном фоне (по умолчанию), а не на черном, в размере 70х70 и 15х15. заранее спасибо

Код
// Проверка допустимых расширений файлов
            if (!in_array($ext[1], $al_ext)) {
                echo '<p><b>ОШИБКА!</b></p><p>Запрещенный тип файла!<br />';
                echo 'К отправке разрешены только файлы, имеющие следующее расширение:<br />';
                echo implode(', ', $al_ext);
                echo '</p><p><a href="index.php?act=addfile&amp;id=' . $id .
                    '">Повторить</a></p>';
                require_once ('../incfiles/end.php');
                exit;
            }


            $nameimg = $id . '.' . $ext[1];

            function create_img($name_big, $name_small, $xs, $ys) {
                list($x, $y, $t, $attr) = getimagesize($name_big);

                if ($t == IMAGETYPE_GIF)
                    $big = imagecreatefromgif($name_big);
                else
                    if ($t == IMAGETYPE_JPEG)
                        $big = imagecreatefromjpeg($name_big);
                    else
                        if ($t == IMAGETYPE_PNG)
                            $big = imagecreatefrompng($name_big);
                        else
                            return;

                $small = imagecreatetruecolor();
                $res = imagecopyresampled($small, $big, 0, 0, 0, 0, $xs, $ys, $x, $y);
                imagedestroy($big);
                imagejpeg($small, $name_small);
                imagedestroy($small);
            }

            create_img('' . $_FILES["filename"]["tmp_name"] . '', 'logo/big' . $nameimg, 70,
                70);
            create_img('' . $_FILES["filename"]["tmp_name"] . '', 'logo/small' . $nameimg,
                15, 15);
            echo '<br/><br/><img src="logo/' . $nameimg . '" alt=""/>Готово ';
            mysql_query("update `m_team` set `logo`='" . $nameimg . "' where id='" . $id .
                "';");
            break;
.
kantry
Iron_Man, В твоей функции - никак
У тебя там несколько ошибок, во первых imagecreatetruecolor() без параметров,
и изображение ты сохраняешь в jpeg откуда у него альфа канал возьмется
http://php.net/manual/ru/funct ... r.php первый же коммент.
$small = imagecreatetruecolor($xs, $ys);
                
    imagesavealpha($small, true);

    $trans_colour = imagecolorallocatealpha($small, 0, 0, 0, 127);
    imagefill($small, 0, 0, $trans_colour);
   
    $red = imagecolorallocate($small, 255, 0, 0);
    imagefilledellipse($small, 400, 300, 400, 300, $red);
    
    $res = imagecopyresampled($small, $big, 0, 0, 0, 0, $xs, $ys, $x, $y);
    imagedestroy($big);
    imagepng($small, $name_small);
    imagedestroy($small);
.
Добавлено: 03.12.2018 / 18:54
kantry,
$nameimg = $id . '.' . $ext[1];

            function create_img($name_big, $name_small, $xs, $ys) {
                list($x, $y, $t, $attr) = getimagesize($name_big);

                if ($t == IMAGETYPE_GIF)
                    $big = imagecreatefromgif($name_big);
                else
                    if ($t == IMAGETYPE_JPEG)
                        $big = imagecreatefromjpeg($name_big);
                    else
                        if ($t == IMAGETYPE_PNG)
                            $big = imagecreatefrompng($name_big);
                        else
                            return;

               $small = imagecreatetruecolor($xs, $ys);

 

imagesavealpha($small, true);

 

$trans_colour = imagecolorallocatealpha($small, 0, 0, 0, 127);

imagefill($small, 0, 0, $trans_colour);

 

$red = imagecolorallocate($small, 255, 0, 0);

imagefilledellipse($small, 400, 300, 400, 300, $red);

 

$res = imagecopyresampled($small, $big, 0, 0, 0, 0, $xs, $ys, $x, $y);

imagedestroy($big);

imagepng($small, $name_small);

imagedestroy($small);

            

            create_img('' . $_FILES["filename"]["tmp_name"] . '', 'logo/big' . $nameimg, 110,
                70);
            create_img('' . $_FILES["filename"]["tmp_name"] . '', 'logo/small' . $nameimg,
                15, 15);
            echo '<br/><br/><img src="logo/' . $nameimg . '" alt=""/>Готово ';
            mysql_query("update `m_team` set `logo`='" . $nameimg . "' where id='" . $id .
                "';");
            break;


Что не так

Добавлено: 03.12.2018 / 19:07
imagedestroy($small);
}

Так тоже пробовал
.
Iron_Man, Да сейчас все вроде правильно, а что именно не так? Например jpeg не будет прозрачным по определению. Найди картинку png с альфа каналом и проверь.
.
Файл не доступен, ошибка
.
kantry, HTTP ERROR 500
.
Iron_Man, Ну так смотри на свои пути к файлам. Вообщето надо проверку делать загружен файл или нет, напр. if(is_uploaded_file($_FILES['file']['tmp_name']) // а тут уже начинать его обрабатывать.
.
kantry, Код был рабочий хоть и хреновым, я заменил кусок кода, сделал все правильно, но он почему-то не работает, сможешь помочь мне нужно срочно сделать выгрузку изображений
.
Iron_Man, Ну ты оберни свой код вот в такую конструкцию, и погляди что там у тебя в массиве $_FILES приходит. ЯБыстро не стоит ничего делать, надо внимательно делать
if (isset($_FILES["file"]["tmp_name"]) && is_uploaded_file($_FILES["file"]["tmp_name"])) {
            var_dump($_FILES);
            create_img($_FILES["file"]["tmp_name"], '6-1.png', 70, 70);
            
}
.
kantry,
function create_img($name_big, $name_small, $xs, $ys) {
                list($x, $y, $t, $attr) = getimagesize($name_big);
 
                if ($t == IMAGETYPE_GIF)
                    $big = imagecreatefromgif($name_big);
                else
                    if ($t == IMAGETYPE_JPEG)
                        $big = imagecreatefromjpeg($name_big);
                    else
                        if ($t == IMAGETYPE_PNG)
                            $big = imagecreatefrompng($name_big);
                        else
                            return;
 
               $small = imagecreatetruecolor($xs, $ys);
 
 
 
imagesavealpha($small, true);
 
 
 
$trans_colour = imagecolorallocatealpha($small, 0, 0, 0, 127);
 
imagefill($small, 0, 0, $trans_colour);
 
 
 
$red = imagecolorallocate($small, 255, 0, 0);
 
imagefilledellipse($small, 400, 300, 400, 300, $red);
 
 
 
$res = imagecopyresampled($small, $big, 0, 0, 0, 0, $xs, $ys, $x, $y);
 
imagedestroy($big);
 
imagepng($small, $name_small);
 
imagedestroy($small);
 }
 
 
            create_img('' . $_FILES["filename"]["tmp_name"] . '', 'logo/big' . $nameimg, 110,
                70);
            create_img('' . $_FILES["filename"]["tmp_name"] . '', 'logo/small' . $nameimg,
                15, 15);
            echo '<br/><br/><img src="logo/' . $nameimg . '" alt=""/>Готово ';
            mysql_query("update `m_team` set `logo`='" . $nameimg . "' where id='" . $id .
                "';");
            break;

Вот мой код он не работает, не работает вообще файл, хз почему
Всего: 30