<?php
###############################
#Upload de Imagem
###############################
$erro = $config = array();

include("brain.php");

if($largura_definida) {
	$largura = $largura_definida;
}
if($altura_definida) {
	$altura = $altura_definida;
}

if($largura_thumb_definida) {
	$largura_thumb = $largura_thumb_definida;
}
if($altura_thumb_definida) {
	$altura_thumb = $altura_thumb_definida;
}

// Prepara a variável do arquivo
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
if ($arquivo["name"] == "") {
	$arquivo = isset($_FILES["foto_nova"]) ? $_FILES["foto_nova"] : FALSE;
}

// Formulário postado... executa as ações
if($arquivo)
{  
	// Verifica se o mime-type do arquivo é de imagem
    if(!eregi("^image\/(jpg|jpeg|png|gif|bmp|pjpeg|pjpg)$", $arquivo["type"]))
    {
        $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, 
			bmp, gif ou png. Envie outro arquivo";
    }
    else
    {
		// Verifica se o nome do arquivo já existe
		$nome_da_imagem = $foto;
		if(file_exists(PATH_IMG . "/" . $nome_da_imagem))
		{
			$erro[] = "J&aacute; existe um arquivo com este nome no servidor. Renomeio o arquivo que deseja enviar e o envie novamente.";
		} 	

		// Verifica tamanho do arquivo
        if($arquivo["size"] > $config["tamanho"])
        {
            $erro[] = "Arquivo em tamanho muito grande! 
		A imagem deve ser de no m&aacute;ximo " . $config["tamanho"] . " bytes. 
		Envie outro arquivo";
        }
        
        // Para verificar as dimensões da imagem
        $tamanhos = getimagesize($arquivo["tmp_name"]);
        
        // Verifica largura
        if($tamanhos[0] > $config["largura"])
        {
            $erro[] = "Largura da imagem n&atilde;o deve 
				ultrapassar " . $config["largura"] . " pixels";
        }

        // Verifica altura
        if($tamanhos[1] > $config["altura"])
        {
            $erro[] = "Altura da imagem n&atilde;o deve 
				ultrapassar " . $config["altura"] . " pixels";
        }
    }
    
    // Imprime as mensagens de erro
    if(sizeof($erro))
    {
        foreach($erro as $err)
        {
            echo " - " . $err . "<BR>";
        }

        echo "<a href=\"javascript:window.history.go(-1)\">Voltar</a>";
		exit;
    }

    // Verificação de dados OK, nenhum erro ocorrido, executa então o upload...
    else
    {
        // Caminho de onde a imagem ficará
        $imagem_dir = PATH_FISICO_IMG . "/" . $foto;

        // Faz o upload da imagem
        move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
    }
} else {
	echo "Erro no envio da imagem. Entre em contato com algum administrador do site.";
}




##################################################
# Diminui a imagem original
##################################################

// Constantes: variaveis que não mudam em todo o programa
define(MAX_WIDTH, $largura);
define(MAX_HEIGHT, $altura);

# Pega onde está a imagem
$image_path = PATH_IMG . "/" . $foto;

# Carrega a imagem
$img = null;

$extensao = strtolower(end(explode('.', $image_path)));

if ($extensao == 'jpg' || $extensao == 'jpeg') {
	$img = @imagecreatefromjpeg($image_path);

} else if ($extensao == 'png') {
	$img = @imagecreatefrompng($image_path);

// Se a versão do GD incluir suporte a GIF, mostra...
} else if ($extensao == 'gif') {
	$img = @imagecreatefromgif($image_path);
}

// Se a imagem foi carregada com sucesso, testa o tamanho da mesma
if ($img) {

	// Pega o tamanho da imagem e proporção de resize
	$width  = imagesx($img);
	$height = imagesy($img);
	$scale  = min(MAX_WIDTH/$width, MAX_HEIGHT/$height);

	if (!$no_scale) {
		// Se a imagem é maior que o permitido, encolhe ela!
		if ($scale < 1) {
			$new_width = floor($scale*$width);
			$new_height = floor($scale*$height);
	
			// Cria uma imagem temporária
			$tmp_img = imagecreatetruecolor($new_width, $new_height);
	
			// Copia e resize a imagem velha na nova
			imagecopyresampled($tmp_img, $img, 0, 0, 0, 0,$new_width, $new_height, $width, $height);
			imagedestroy($img);
			$img = $tmp_img;
		}
	} else {
		// Cria uma imagem temporária
		$tmp_img = imagecreatetruecolor($largura_fixa, $altura_fixa);

		// Copia e resize a imagem velha na nova
		imagecopyresampled($tmp_img, $img, 0, 0, 0, 0,$largura_fixa, $altura_fixa, $width, $height);
		imagedestroy($img);
		$img = $tmp_img;
	}
}

// Cria uma imagem de erro se necessário
if (!$img) {
	$img = imagecreate(MAX_WIDTH, MAX_HEIGHT);

	imagecolorallocate($img,204,204,204);
	
	$c  = imagecolorallocate($img,153,153,153);
	$c1 = imagecolorallocate($img,0,0,0);
	
	imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c);
	imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c);
	imagestring($img, 2, 12, 55, 'erro ao carregar imagem',$c1 );
}

// Salva a imagem
$imagem_gerada = PATH_FISICO_IMG . "/" . $foto;
imagejpeg($img, $imagem_gerada, $qualidade);

if(!$no_thumbnail) {
	##################################################
	# Cria o Thumbnail
	##################################################
	
	
	// Constantes: variaveis que não mudam em todo o programa
	define(MAX_WIDTH_THUMB, $largura_thumb);
	define(MAX_HEIGHT_THUMB, $altura_thumb);
	
	# Pega onde está a imagem
	$image_path_thumb = PATH_IMG . "/" . $foto;
	
	# Carrega a imagem
	$img_thumb = null;
	
	$extensao_thumb = strtolower(end(explode('.', $image_path_thumb)));
	
	if ($extensao_thumb == 'jpg' || $extensao_thumb == 'jpeg') {
		$img_thumb = @imagecreatefromjpeg($image_path_thumb);
	
	} else if ($extensao == 'png') {
		$img_thumb = @imagecreatefrompng($image_path_thumb);
	
	// Se a versão do GD incluir suporte a GIF, mostra...
	} else if ($extensao_thumb == 'gif') {
		$img_thumb = @imagecreatefromgif($image_path_thumb);
	}
	
	// Se a imagem foi carregada com sucesso, testa o tamanho da mesma
	if ($img_thumb) {
	
		// Pega o tamanho da imagem e proporção de resize
		$width_thumb  = imagesx($img_thumb);
		$height_thumb = imagesy($img_thumb);
		$scale_thumb  = min(MAX_WIDTH_THUMB/$width_thumb, MAX_HEIGHT_THUMB/$height_thumb);
	
		if (!$no_scale) {
			// Se a imagem é maior que o permitido, encolhe ela!
			if ($scale_thumb < 1) {
				$new_width_thumb = floor($scale_thumb*$width_thumb);
				$new_height_thumb = floor($scale_thumb*$height_thumb);
		
				// Cria uma imagem temporária
				$tmp_img_thumb = imagecreatetruecolor($new_width_thumb, $new_height_thumb);
		
				// Copia e resize a imagem velha na nova
				imagecopyresampled($tmp_img_thumb, $img_thumb, 0, 0, 0, 0,$new_width_thumb, $new_height_thumb, $width_thumb, $height_thumb);
				imagedestroy($img_thumb);
				$img_thumb = $tmp_img_thumb;
			}
		} else {
			// Cria uma imagem temporária
			$tmp_img_thumb = imagecreatetruecolor($largura_fixa_thumb, $altura_fixa_thumb);
	
			// Copia e resize a imagem velha na nova
			imagecopyresampled($tmp_img_thumb, $img_thumb, 0, 0, 0, 0,$largura_fixa_thumb, $altura_fixa_thumb, $width_thumb, $height_thumb);
			imagedestroy($img_thumb);
			$img_thumb = $tmp_img_thumb;
		}
	}
	
	// Cria uma imagem de erro se necessário
	if (!$img_thumb) {
		$img_thumb = imagecreate(MAX_WIDTH_THUMB, MAX_HEIGHT_THUMB);
	
		imagecolorallocate($img_thumb,204,204,204);
		
		$c_thumb  = imagecolorallocate($img_thumb,153,153,153);
		$c1_thumb = imagecolorallocate($img_thumb,0,0,0);
		
		imageline($img_thumb,0,0,MAX_WIDTH_THUMB,MAX_HEIGHT_THUMB,$c_thumb);
		imageline($img_thumb,MAX_WIDTH_THUMB,0,0,MAX_HEIGHT_THUMB,$c_thumb);
		imagestring($img_thumb, 2, 12, 55, 'erro ao carregar miniatura',$c1_thumb );
	}
	
	// Salva a imagem
	$imagem_gerada_thumb = PATH_FISICO_IMG . "/" .$caminho_imagens_thumbs . "/" . $foto;
	imagejpeg($img_thumb, $imagem_gerada_thumb, $qualidade);
}
?>