В общем как сделать чтобы изображение в формате 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&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;
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 с альфа каналом и проверь.
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;
Вот мой код он не работает, не работает вообще файл, хз почему