3l3tr1c 1 Denunciar post Postado Junho 24, 2010 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")) { if($file['name']!=""){ //Executa o codigo somente se houver upload $nome = $file['name']; //atribui a var nome o valor NAME da matriz file $ex2 = end(explode(".",$nome)); // Quebra onde achar "." if(($file['name']!="") AND (is_file($file['tmp_name'])) AND (in_array($ex2,$ext)) ) { $formato = $file["type"]; //Formato da imagem $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; }elseif($height>500 AND $width>500){ $percent = 0.4; }elseif($height<500 AND $width<500){ $percent = 0.8; }elseif($height<300 AND $width<300){ $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); }elseif($formato == "image/png"){ $thumb = imagecreatetruecolor($newwidth, $newheight); $source = imagecreatefrompng($filename); }elseif($formato == "image/gif"){ $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"); } Compartilhar este post Link para o post Compartilhar em outros sites
3l3tr1c 1 Denunciar post Postado Junho 26, 2010 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. Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Junho 27, 2010 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.......... Compartilhar este post Link para o post Compartilhar em outros sites
3l3tr1c 1 Denunciar post Postado Junho 28, 2010 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! Compartilhar este post Link para o post Compartilhar em outros sites