Habbo Server
Olá, ja é registrado?nParabéns, você é um membro do maior forum Habbo do Brasil!nnNÃO PRECISA CONFIRMAR EMAILnNão é registrado?nRegistre-se e descubra o maior forum Habbo do Brasil!nnHTA Forum - O maior forum de Habbo do Brasil

Participe do fórum, é rápido e fácil

Habbo Server
Olá, ja é registrado?nParabéns, você é um membro do maior forum Habbo do Brasil!nnNÃO PRECISA CONFIRMAR EMAILnNão é registrado?nRegistre-se e descubra o maior forum Habbo do Brasil!nnHTA Forum - O maior forum de Habbo do Brasil
Habbo Server
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Phoenix
Phoenix
Posts : 368

Sexo : Masculino

Local : Ex-Administrador

Sistema de upload de imagem [php] Empty Sistema de upload de imagem [php]

25/3/2011, 10:12
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 destino

vamos ao script:

index.php
Código:
<?

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
Código:
<?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
Código:
<?
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 imagem

modo de usar passando a resolução como parametro exemplo 400 X 300
reduz_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.

Retirado de: IMasters Fóruns, by: Fabyo.
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos