Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
A partir desse código você pode enviar a imagem, empacotar o nome dela evitando o uso de caracteres especiais em seu nome, redimensionar e gravar.
A imagem é grava em um diretório e em seguida é sobreposta por uma imagem com o mesmo nome, mas tamanho diferente.
Uso o código e não encontrei erros. Qualquer coisa postem os erros. Valeu!
/*
Para usar a funcao basta inseir na pagina o seguinte codigo:
<?PHP
$arquivo = upload($_FILES['arquivo'],'diretorio/');
?>
Obs.: a funcao do upload eu adaptei de uma que encontrei na net e de redimensionar eu criei.
*/
//Exibi alertas com os erros retornados, somente se eles existirem
if(isset($_GET['01'])){
echo "<script>alert(\"Formato de imagem inválido. O formato da imagem que você está tentando enviar não é permitido pelo sistema.\")</script>";
}else if(isset($_GET['02'])){
echo "<script>alert(\"O tamanho do arquivo que você está tentando enviar é muito alto. Tamanho máximo permitido: 1.2 MB.\")</script>";
}
function upload($file, $dir, $ext = array("gif","jpg","png","jpeg","JPG","PNG","GIF","JPEG")) {$mudarNome = md5($nome).".".$ex2; //empacota o nome evitando caracteres especiais e espaços
if($formato == "image/jpeg" OR $formato == "image/jpg" OR $formato == "image/png" OR $formato == "image/gif"){
move_uploaded_file($file['tmp_name'], "$dir/$mudarNome") or die ();
redimencionamento($mudarNome, $formato, $dir, $ex2); //Chama a funcao que redimensiona
}
else{
die (header("Location: img.php?01"));
}// Else anterior
}//If nome, file, array
}//If nome!=""
}//Função upload
//Funcao para redimensionar
function redimencionamento($mudarNome, $formato, $dir, $extensao){
//nome do arquivo e diretorio para gravacao
$filename = $dir."/".$mudarNome;
//$dimensaoImagem = getimagesize($filename, $info);
//atribui as variaveis largura e altura os valores da matriz obtida a partir de getimage
list($width, $height) = getimagesize($filename);
//define percentual para redimensionamento a partir do tamanho original
if($height>1000 AND $width>1000){
$percent = 0.2;$percent = 1;
}
//diminui proporcionalmente o tamanho da imagem
$newwidth = $width * $percent;
$newheight = $height * $percent;
//Verifica o formato da imagem para uso especifico da funcao imagecreate
if($formato == "image/jpeg"){
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefrompng($filename);$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromgif($filename);
}
//Fundo branco
//aloca cores
$fundoBranco = imagecolorallocate($thumb,255,255,255);
//pinta o fundo
imagefill($thumb, 0, 0, $fundoBranco);
//Redimensiona
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
//Grava no formato .JPG
$imgMenor = imagejpeg($thumb, "$dir/$mudarNome");
}Eai kra beleza? achei interessante esse esquema de upar a imagem, pelo que entendi ele upa a mesma e ja deixa ela do tamanho definido, me corrija se estiver enganado, e tambem ja renomeia a foto, isso? bom to tentando aqui mais como sou leigo nao sei direito como usar esse codigo rsrs, mais to tentando, se tiver como dar um help agradeceria muito....abç e vlwww por disponibilizar o codigo..........
>
Eai kra beleza? achei interessante esse esquema de upar a imagem, pelo que entendi ele upa a mesma e ja deixa ela do tamanho definido, me corrija se estiver enganado, e tambem ja renomeia a foto, isso? bom to tentando aqui mais como sou leigo nao sei direito como usar esse codigo rsrs, mais to tentando, se tiver como dar um help agradeceria muito....abç e vlwww por disponibilizar o codigo..........
Correto. Ao fazer o upload da imagem o nome dela é encriptado (empacotado) para que não seja enviado caracteres especiais junto a ele, essa é apenas uma ideia de se fazer isso. Depois a imagem é enviada a uma pasta que VOCÊ CRIARÁ e redimensionada. O nome da pasta que você criará será inserido, no código, onde diz "DIRETORIO/" é lá aonde você irá por o nome da pasta criada. Você pode utilizar o código em uma página chamada upload.php, p. ex., e colocar o script no começo da página. EM seguida voce cria um formulário e adiciona a ele um campo de arquivos (filefield) e chama-o de qualquer coisa, ex.: foto, logomarca, imagem... No "action" do formulário você põe o sinal de interrogação, ex.: <form action="?"....>, dessa forma os dados será enviado para a mesma página. E no começo da página, estará o código que fará o upload. Lembre-se: é preciso usar a função que ordena o upload, faça assim:
<?PHP
$arquivo = upload($_FILES['arquivo'],'diretorio/');
?>, ponha isso antes do outro código. Mais uma vez, o nome "arquivo" é o nome do filefield e o "diretorio/" é a pasta que você vai criar, essa pasta deve estar no mesmo lugar da página, caso contrário mude o endereço para outro local. Espero ter ajuda, no mais aconselho-te a dar uma estudada nos códigos que você encontra dentro da função, assim você entenderá melhor o que se passa em cada linha da mesma. Boa sorte!
Algumas correções:
Aonde vocês veem "if($height>1000 AND..." troquem o operador por "or" para não causar erro e há um pequeno erro gramatical no nome da segunda função. O correto é "redimensionar", procurem aonde há a função e renomeiem. Entrementes, só isso que vi de errado. Algo a mais, postem.