Fabyo 66 Denunciar post Postado Janeiro 29, 2006 Pessoal essa classe que eu fiz ja tem um bom tempo, nem considero uma classe é mais uma função, mas como a intenção é ensinar o redimencionamento entao nao refiz a classe o que quero passar pra vcs é o redimencionamento da imagem e criando o thumbnails , apesar que minha classe sendo antiga ela funciona legal e valida se o upload foi feito e se é uma imagem mesmo e nesse exemplo eu nao uso as funções de upload move nem copy porque eu pego a imagem na pasta temp do servidor e ja crio a imagem nova na pasta destinovamos ao script:index.php <? require_once "class_upload.php"; $upload = new Upload(); $upload->Envia_Arquivo(); ?> <html> <head> <title>Upload</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="arquivo"> <input type="submit" name="Submit" value="Enviar"> </form> </body> </html> funcoes.php <?php /*Fabyo Guimaraes de Oliveira */ function reduz_imagem($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100); } ?> class.upload.php <? set_time_limit(0); include "funcoes.php"; class Upload { var $arquivo = ""; var $erro = array ( "0" => "upload execultado com sucesso!", "1" => "O arquivo é maior que o permitido pelo Servidor", "2" => "O arquivo é maior que o permitido pelo formulario", "3" => "O upload do arquivo foi feito parcialmente", "4" => "Não foi feito o upload do arquivo" ); function Verifica_Upload() { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; if(!is_uploaded_file($this->arquivo['tmp_name'])) { return false; } $get = getimagesize($this->arquivo['tmp_name']); if($get["mime"] != "image/jpeg") { echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse foto nao é uma imagem valida</span>"; exit; } return true; } function Envia_Arquivo() { if($this->Verifica_Upload()) { $this->gera_fotos(); return true; } else { echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$this->arquivo['error']]."</span>"; } } function gera_fotos() { $diretorio = "fotos/"; if(!file_exists($diretorio)) { mkdir($diretorio); } $nome_foto = "imagem_".time().".jpg"; $nome_thumb = "thumb_".time().".jpg"; //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem($this->arquivo['tmp_name'], 400, 300, $diretorio.$nome_foto); //passo o tamanho da thumbnail reduz_imagem($this->arquivo['tmp_name'], 120, 90, $diretorio.$nome_thumb); echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$this->arquivo['error']]."</span>"; } } ?> como falei acima o foco desse tutorial é ensinar o redimencionamento da imagem sem perder nenhum pedaço da imagem porque a função reduz_imagem que eu criei ela redimenciona proporcionalmente a imagemmodo de usar passando a resolução como parametro exemplo 400 X 300reduz_imagem("nome_da_imagem", 400, 300, "path_da_foto");com esse exemplo vcs podem criar sistema de upload que salva o nome da foto no banco e só adaptar a gosto mas quem tiver duvidas só postar Compartilhar este post Link para o post Compartilhar em outros sites
Epyllion 0 Denunciar post Postado Janeiro 30, 2006 Parabéns, Fabyo. Mais um ótimo tutorial. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
wilson 0 Denunciar post Postado Fevereiro 18, 2006 Olá Fabyo..Legal seu tutorial, entretanto, desculpa minha ignorância.Como eu faço se, a partir desse tutorial, eu quero gravar a img em banco de dados?abçwilson Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Fevereiro 20, 2006 Muito bom.. tava precisando de um script desses! Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 20, 2006 só salvar o path do arquivo no banco de dados Compartilhar este post Link para o post Compartilhar em outros sites
slackneo 0 Denunciar post Postado Fevereiro 23, 2006 Olá pessoal, bem me interessei por esse script, porém não consegui usá-lo.Erro:- Fiz os arquivos todos como no post, mas quando vou testar escolho a imagem e depois que clico em ENVIAR ele da um erro dizendo que o arquivo UPLOAD.PHP não existe.Agradeço desde jah! Compartilhar este post Link para o post Compartilhar em outros sites
Daniel.Dj 0 Denunciar post Postado Março 2, 2006 ótimo script fabyo! :D 'slackneo' disse: Olá pessoal, bem me interessei por esse script, porém não consegui usá-lo. Erro: - Fiz os arquivos todos como no post, mas quando vou testar escolho a imagem e depois que clico em ENVIAR ele da um erro dizendo que o arquivo UPLOAD.PHP não existe. Agradeço desde jah! altere essa linha do index.php: <form action="upload.php" method="post" enctype="multipart/form-data" name="form1">por: <form action="index.php" method="post" enctype="multipart/form-data" name="form1"> http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
taylo 0 Denunciar post Postado Março 10, 2006 Cara eu não consigo fazer pegar os nome pra sauvar em um banco de dados!!!!! :( já tentei de tudo!Gostaria que na (index.php) ond fica o formalario para envio que tivesse mas duas coisas!*Categoria*titlo*Comenterio.mas não conssigo! a pagina fica em brancos e eu não sei mexer com as class!des de já obrigado! é urgente! Citar Cara eu não consigo fazer pegar os nome pra sauvar em um banco de dados!!!!! :( já tentei de tudo!Gostaria que na (index.php) ond fica o formalario para envio que tivesse mas duas coisas!*Categoria*titlo*Comenterio.mas não conssigo! a pagina fica em brancos e eu não sei mexer com as class!des de já obrigado! é urgente! Compartilhar este post Link para o post Compartilhar em outros sites
taylo 0 Denunciar post Postado Março 12, 2006 Ajuda ai gente eu estou pressissando disto! Compartilhar este post Link para o post Compartilhar em outros sites
mathews 0 Denunciar post Postado Março 13, 2006 Ola estou começando meus estudos em php entaum fui testar isso e aparece esse problema pq ocorre??eu criei as 3 php e na index surgiu isso:Warning: main(class_upload.php) [function.main]: failed to open stream: No such file or directory in /home/mathews/public_html/Laboratorio/index.php on line 3Fatal error: main() [function.require]: Failed opening required 'class_upload.php' (include_path='.:/usr/lib/php:/usr/local/lib/php:/usr/local/cpanel/3rdparty/lib/php') in /home/mathews/public_html/Laboratorio/index.php on line 3 Compartilhar este post Link para o post Compartilhar em outros sites
Angellis 0 Denunciar post Postado Março 28, 2006 Abençoado seja o apt-get :)Problema resolvido :) Citar Fabyo, é necessário ter instalado algo mais no Php/Apache para teu código funcionar?Estou tendo a seguinte msg de erro:Fatal error: Call to undefined function: imagecreatetruecolor() in /var/www/alex/funcoes.php on line 22Tentei um var_dump(gd_info()); e o mesmo erro:Fatal error: Call to undefined function: gd_info() in /var/www/alex/index_upload.php on line 9Grato, Compartilhar este post Link para o post Compartilhar em outros sites
Angellis 0 Denunciar post Postado Abril 4, 2006 Fabyo, você poderia dar uma explicação de como funciona os erros desse seu script? Estou melhorando ele, adicionando outras funcionalidades mas não entendi algumas coisas. Por exemplo, aqui você cria um array com as msg de erro: $erro = array ( "0" => "upload execultado com sucesso!", "1" => "O arquivo é maior que o permitido pelo Servidor", "2" => "O arquivo é maior que o permitido pelo formulario", "3" => "O upload do arquivo foi feito parcialmente", "4" => "Não foi feito o upload do arquivo" Depois lá no final você imprime o resultado com esse código aqui: $this->erro[$this->arquivo['error']] Eu não entendi exatamente essa última linha, pode explicar ela? Grato, Compartilhar este post Link para o post Compartilhar em outros sites
Hamilcar 1 Denunciar post Postado Maio 21, 2006 mathews disse: Ola estou começando meus estudos em php entaum fui testar isso e aparece esse problema pq ocorre?? eu criei as 3 php e na index surgiu isso: Warning: main(class_upload.php) [function.main]: failed to open stream: No such file or directory in /home/mathews/public_html/Laboratorio/index.php on line 3 Fatal error: main() [function.require]: Failed opening required 'class_upload.php' (include_path='.:/usr/lib/php:/usr/local/lib/php:/usr/local/cpanel/3rdparty/lib/php') in /home/mathews/public_html/Laboratorio/index.php on line 3 Aí "mathews", onde se lê require_once "class_upload.php"; você coloca require_once "class.upload.php"; , no index.php. Compartilhar este post Link para o post Compartilhar em outros sites
bah 0 Denunciar post Postado Maio 30, 2006 bom script!!..valew fabyo! Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Maio 31, 2006 Realmente este script esta bom, mas estava testando ele e vi que estava acontecendo uma coisinha muito ruim, não sei se só aconteceu comigo. É o seguinte, se coloco uma img para fazer upload de 800x600 ele fica no tamanho que especifiquei //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem($this->arquivo['tmp_name'], 400, 300, $diretorio.$nome_foto); //passo o tamanho da thumbnail reduz_imagem($this->arquivo['tmp_name'], 120, 90, $diretorio.$nome_thumb); Mas se coloco uma img menor que o tamanho especificado na primeira linha ele não fica no tamnho especificado, nem a mini tbm. Se coloco uma imagem mais grande como a foto de uma camera por exemplo, ela tbm não fica no tamanho indicado. Será c/ alguém aconteceu isso, poderá me dar uma ajudinha?????? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
andrea cerqueira 0 Denunciar post Postado Junho 9, 2006 coloquei o código pra gravar no BD no meu post abaixo. ahhh e o index.php tá errado, é assim: <?require_once "class.upload.php";$upload = new Upload();$upload->Envia_Arquivo();?><html><head><title>Upload</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><form action="index.php" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="arquivo"> <input type="submit" name="Submit" value="Enviar"></form></body></html> http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
andrea cerqueira 0 Denunciar post Postado Junho 11, 2006 bom como várias pessoas estão me perguntando como fiz pra gravar no BD resolvi postar aqui, é só fazer uma conexão como BD e fazer um Insert logo após a função gera_fotos, tô postando o código do início da função gera_fotos até o da conexão e da inserção. lembrando que você deve alterar os campos: usuario senha nome_do_bd nome_da_tabela pelas informações do seu BD e da sua tabela ok? function gera_fotos() { $diretorio = "fotos/"; if(!file_exists($diretorio)) { mkdir($diretorio); } $nome_foto = "imagem_".time().".jpg"; $nome_thumb = "thumb_".time().".jpg"; //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem($this->arquivo['tmp_name'], 400, 300, $diretorio.$nome_foto); //passo o tamanho da thumbnail reduz_imagem($this->arquivo['tmp_name'], 120, 90, $diretorio.$nome_thumb); echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$this->arquivo['error']]."</span>"; // ----------------- Gravar no Banco de Dados ------------------- // $conexao = mysql_connect("localhost","usuario","senha"); mysql_select_db("nome_do_bd"); $sql = "insert INTO nome_da_tabela (thumbnail, imagemG) Values ('$nome_thumb','$nome_foto')"; $query = mysql_query($sql); mysql_close($conexao); } }?> Compartilhar este post Link para o post Compartilhar em outros sites
CiberMix 0 Denunciar post Postado Junho 14, 2006 Posta o script Andrea de como conseguiou isso ajuda muitas pessoas. Compartilhar este post Link para o post Compartilhar em outros sites
Hamilcar 1 Denunciar post Postado Agosto 10, 2006 Fabyo disse: Pessoal essa classe que eu fiz ja tem um bom tempo, nem considero uma classe é mais uma função, mas como a intenção é ensinar o redicionamento entao nao refiz a classe o que quero passar pra vcs é o redicionamento da imagem e criando o thumbnails , apesar que minha classe sendo antiga ela funciona legal e valida se o upload foi feito e se é uma imagem mesmo e nesse exemplo eu nao uso as funções de upload move nem copy porque eu pego a imagem na pasta temp do servidor e ja crio a imagem nova na pasta destinovamos ao script:index.php <?require_once "class_upload.php";$upload = new Upload();$upload->Envia_Arquivo();?><html><head><title>Upload</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><form action="upload.php" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="arquivo"> <input type="submit" name="Submit" value="Enviar"></form></body></html>funcoes.php<?php/*Fabyo Guimaraes de Oliveira */function reduz_imagem($img, $max_x, $max_y, $nome_foto) {//pega o tamanho da imagem ($original_x, $original_y)list($width, $height) = getimagesize($img);$original_x = $width;$original_y = $height;// se a largura for maior que alturaif($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; }$tamanho_x = $original_x * ($porcentagem / 100);$tamanho_y = $original_y * ($porcentagem / 100);$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);$image = imagecreatefromjpeg($img);imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);return imagejpeg($image_p, $nome_foto, 100);}?>class.upload.php<?set_time_limit(0); include "funcoes.php";class Upload{ var $arquivo = ""; var $erro = array ( "0" => "upload execultado com sucesso!", "1" => "O arquivo é maior que o permitido pelo Servidor", "2" => "O arquivo é maior que o permitido pelo formulario", "3" => "O upload do arquivo foi feito parcialmente", "4" => "Não foi feito o upload do arquivo" ); function Verifica_Upload() { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; if(!is_uploaded_file($this->arquivo['tmp_name'])) { return false; } $get = getimagesize($this->arquivo['tmp_name']); if($get["mime"] != "image/jpeg") { echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse foto nao é uma imagem valida</span>"; exit; } return true; } function Envia_Arquivo() { if($this->Verifica_Upload()) { $this->gera_fotos(); return true; } else { echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$this->arquivo['error']]."</span>"; } } function gera_fotos() { $diretorio = "fotos/"; if(!file_exists($diretorio)) { mkdir($diretorio); } $nome_foto = "imagem_".time().".jpg"; $nome_thumb = "thumb_".time().".jpg"; //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem($this->arquivo['tmp_name'], 400, 300, $diretorio.$nome_foto); //passo o tamanho da thumbnail reduz_imagem($this->arquivo['tmp_name'], 120, 90, $diretorio.$nome_thumb); echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$this->arquivo['error']]."</span>"; } }?>como falei acima o foco desse tutorial é ensinar o redicionamento da imagem sem perder nenhum pedaço da imagem porque a função reduz_imagem que eu criei ela redimenciona proporcionalmente a imagemmodo de usar passando a resolução como parametro exemplo 400 X 300reduz_imagem("nome_da_imagem", 400, 300, "path_da_foto"); com esse exemplo vcs podem criar sistema de upload que salva o nome da foto no banco e só adaptar a gosto mas quem tiver duvidas só postarEstou mudando este script para uso, mas está ocorrendo um aviso de warning quando executo ele gostaria de saber como resolver, o aviso é o seguinte:Warning: set_time_limit(): Cannot set time limit in safe mode in endServidor/clas.upload.php - linha 2Será que posso simplismente tirar essa linha (' set_time_limit(0); '), ou será que não seria esta a melhor solução, obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
eronventer 2 Denunciar post Postado Agosto 18, 2006 Fui testar no meu localhost o script porem, mesmo com a biblioteca GD habilitada no codigo fonte ele imprimi o php no index.php <?require_once "class_upload.php";$upload = new Upload();$upload->Envia_Arquivo();?> tentei alterar o require_once por include mas tbm nao funcionou outros script funcionaram normal o que pode ser? Compartilhar este post Link para o post Compartilhar em outros sites