Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

matheusmarson

Upload arquivo PNG transparente

Recommended Posts

Senhores

 

estou fazendo um sistema de upload para arquivos png.

O upload é feito, mas a imagem não fica com o fundo transparente como é a imagem original.

O novo arquivo fica com o fundo preto

 

o código é o seguinte:


$img = imagecreatefrompng($arq_temporario);  
       imageAlphaBlending($img, true);
imageSaveAlpha($img, true);

$novaImg = imagecreatetruecolor(intval($nova_largura), intval($nova_altura)); 
imagepng($novaImg, $destino.$novo_nome.$img_nome);

 

Alguem saberia como fazer para ficar com o fundo transparente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, mas as imagens que serão upadas serão do formato png??

 

Pelo o que eu entendi...

 

Você tem uma imagem comum (de qualquer extensão) e quer upar ela transformando ela em um png transparente?????

 

:huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está alterando a imagem original, mas depois cria uma imagem 'comum' com o imagetruecolor e é essa que você salva.

Não testei, mas assim deve funcionar:

$srcImg = imagecreatefrompng($arq_temporario);
     $dstImg = imagecreatetruecollor((int) $nova_largura, (int) $nova_altura);
     imagecopyresampled($srcImg, $dstImg, 0, 0, 0, 0, (int) $nova_largura, (int) $nova_largura, $largura_original, $altura_original);
     imageAlphaBlending($dstImg, true);
     imageSaveAlpha($dstImg, true);       imagepng($dstImg, $destino.$novo_nome.$img_nome);

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta utilizar este código para fazer o upload

 

<?php

// Pasta onde o arquivo vai ser salvo
$_UP['pasta'] = 'uploads/';

// Tamanho máximo do arquivo (em Bytes)
$_UP['tamanho'] = 1024 * 1024 * 2; // 2Mb

// Array com as extensões permitidas
$_UP['extensoes'] = array('jpg', 'png', 'gif');

// Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único)
$_UP['renomeia'] = false;

// Array com os tipos de erros de upload do PHP
$_UP['erros'][0] = 'Não houve erro';
$_UP['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP';
$_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';
$_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente';
$_UP['erros'][4] = 'Não foi feito o upload do arquivo';

// Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro
if ($_FILES['arquivo']['error'] != 0) {
die("Não foi possível fazer o upload, erro:<br />" . $_UP['erros'][$_FILES['arquivo']['error']]);
exit; // Para a execução do script
}

// Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar

// Faz a verificação da extensão do arquivo
$extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));
if (array_search($extensao, $_UP['extensoes']) === false) {
echo "Por favor, envie arquivos com as seguintes extensões: jpg, png ou gif";
}

// Faz a verificação do tamanho do arquivo
else if ($_UP['tamanho'] < $_FILES['arquivo']['size']) {
echo "O arquivo enviado é muito grande, envie arquivos de até 2Mb.";
}

// O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta
else {
// Primeiro verifica se deve trocar o nome do arquivo
if ($_UP['renomeia'] == true) {
// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg
$nome_final = time().'.jpg';
} else {
// Mantém o nome original do arquivo
$nome_final = $_FILES['arquivo']['name'];
}

// Depois verifica se é possível mover o arquivo para a pasta escolhida
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) {
// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo
echo "Upload efetuado com sucesso!";
echo '<br /><a href="' . $_UP['pasta'] . $nome_final . '">Clique aqui para acessar o arquivo</a>';
} else {
// Não foi possível fazer o upload, provavelmente a pasta está incorreta
echo "Não foi possível enviar o arquivo, tente novamente";
}

}

?>

 

Agora para trabalhar com a imagem

 

utilize o wideImage http://wideimage.sourceforge.net/ (eh uma biblioteca mt boa)

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

A sua imagem esta com fundo transparente matheusmarson. Isto é um problema de CSS que esta definindo que sob todas imagens do tipo png coloque um fundo preto. Baixe novamente a sua imagem png e vai ver que ela continua com o fundo transparente.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.