Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FlavioSI

Upload, redimencionando, gerando thumbs e salvando o path no db...

Recommended Posts

Primeiro eu gostaria de agradecer aos membros deste fórum que participam ativamente e que me ajudaram muito...

 

Partindo de um script do Fábyo, http://forum.imasters.com.br/public/style_emoticons/default/joia.gif fiz uma adaptação aos meus propósitos, ainda falta muita coisa para realmente ficar bom, mas mas estou muito contente com o resultado...

 

Este script redimenciona, cria os thumbs das fotos, salva os nomes no db e salva os comentários....

 

index.php

<?require_once "class_upload.php";$upload = new Upload();$upload->Envia_Arquivo();?><html><head><title>Upload</title><script>   function Contador(field,MaxLength) {	  obj = document.all(field);	  if (MaxLength !=0) {		 if (obj.value.length > MaxLength)  {			obj.value = obj.value.substring(0, MaxLength);			}	  }	  document.form1.contador.value = obj.value.length + '/300';   }</script><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">  <textarea name="mensagem" method = "post" cols="41" rows="7" class="frm_input" id="descricao" style="caixa" onKeyUp="return  Contador('descricao',300);"></textarea><BR>  <input name="contador" type="text" disabled="disabled" class="caixa2" id="contador" size="7" maxlength="7">  <input type="file" name="arquivo">  <input type="submit" name="Submit" value="Enviar"></form></body></html>

 

funções.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'], 100, 70, $diretorio.$nome_thumb);		echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$this->arquivo['error']]."</span>";		 // -Banco de Dados - //		$conexao = mysql_connect("localhost","root","");		mysql_select_db("classificados");		$text = $_POST['mensagem'];		$sql = "insert INTO thumbs  Values ('','$nome_thumb','$nome_foto','$text')";		$query = mysql_query($sql);				mysql_close($conexao);	   	}	}?>

lista.php

<?php$host = "localhost";$user = "root";$senha = "";$db= "nome_do_banco"; $tabela = "nome_da_tabela";$conn = mysql_connect($host,$user,$senha);$banco = mysql_select_db($db);$sql=mysql_query("select * from $tabela order by id_thumbs desc") or die(mysql_error()); echo "<table width=100 border=0>";$total = mysql_num_rows($sql);?><?php$colunas = "3";?><?phpif ($total>0) {for($i=0;$i<$total;$i++) {if (($i%$colunas)==0) {echo "<tr>";}?><?php$dados = mysql_fetch_array($sql);$thumbs = $dados["thumbs"];$imagem = $dados["imagem"];$text = $dados["mensagem"];print "<td><table width=\"140\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><a href=\"fotos/$imagem\" target='_blank'><img src=\"fotos/$thumbs\"></a><br>$text</td></tr></table></td>";}} else {echo "Nenhum registro encontrado";}?>

Mantive os comentários do Fábyo, as alterações ficam por conta da inserção no db, listagem em colunas e os comentários....espero que ajude alguém, lembrando que sou iniciante, manerem nas críticas...hehehhehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi FlavioSI!

Muito bom o seu sistema, mas como o amigo aí de cima havia perguntado, também lhe pergunto.

Você poderia nos disponibilizar as tabelas do banco?

 

Valeu a força! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

o nome do banco de dados que ele usa é classificados...mais é só mudar no class_upload.php linha 59.e o sql pra fazer a tabela pode ser:CREATE TABLE `thumbs` (`id_thumbs` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,`nome` VARCHAR(100) NOT NULL,`thumb` VARCHAR(100) NOT NULL,`foto` VARCHAR(100) NOT NULL);também tem configurações a serem feitas no arquivo lista.phplinhas 5 e 6, onde temos:$db= "nome_do_banco";$tabela = "nome_da_tabela";colocar os dados do db e da tabela acima criados.:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem como eu colocar escrever um texto em cima da imagem?? estou tentando adaptar a função imagettftext mas não consigo =/ alguem pode dar uma luz hehehevalew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom o tuto.

Mas tenhos duvidas no seguinte:

 

O que devo fazer para aceitar outros formatos como gif e png?

 

Em que parte do codigo devo inserir o seguinte:

[*]Verificar o mime-type do arquivo para ver se é de imagem.

[*]Verficar o tamanho do arquivo e

[*]verificar as dimensões da imagem

Preciso muito dele, se puder ajudar fico grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Copie e colei aqui pra testar (e futuramente adaptar ao meu site), mas ele não mostra as imagens... Aparece um quadrado com contorno azul e um X no lugar da imagem/foto... Alguém sabe pq acontece isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Copie e colei aqui pra testar (e futuramente adaptar ao meu site), mas ele não mostra as imagens... Aparece um quadrado com contorno azul e um X no lugar da imagem/foto... Alguém sabe pq acontece isso?

Aconteceu a mesma coisa comigo...analise o codigo dai o nome que eu estava colocando no bd era diferente que esta no script por isso nao aparecia... Da uma olhada se naum eh a mesma coisa contigo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá para todos...

 

estou usando este código como base pra desenvolver um outro q atenda as minhas necessidades... apesar de manjar bem pouco de php to conseguindo numa boa... adicionei alguns campos e ta tudo ok... a minha dúvida é a seguinte: se eu quiser fazer uma página para alterar estes dados que foram inseridos no db? para fazer o update dos outros campos está beleza, mas queria ter a opção de alterar a foto também...

 

tentei alterar o arquivo class_upload.php, na parte que insere no banco, trocando o insert por update e pegando os outros dados por get, mas ele insere um novo registro ao invés de atualizar...

 

alguém pode me ajudar a encontrar o erro?

 

alterar_completo.php

<?include "conexao.php";require_once "class_update.php";$upload = new Upload();$upload->Envia_Arquivo();$data_atual = date("d/m/Y");$id = $_GET["id"];$sql = "SELECT * FROM relatorio WHERE id_relatorio='$id'";$resultado = mysql_query($sql)or die (mysql_error());$dados = mysql_fetch_array($resultado);$data = $dados["data"];$cliente = $dados["cliente"];$text = $dados["foto"];?><html><head><title>Upload</title><script>function Contador(field,MaxLength) {	  obj = document.all(field);	  if (MaxLength !=0) {		 if (obj.value.length > MaxLength)  {			obj.value = obj.value.substring(0, MaxLength);			}	  }	  document.form1.contador.value = obj.value.length + '/300';   }function MM_jumpMenu(targ,selObj,restore){ //v3.0  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");  if (restore) selObj.selectedIndex=0;}</script><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><h3>ID: <? echo "$id"; ?></h3><form action="index.php" method="post" enctype="multipart/form-data" name="form1">  <input type="hidden" name="id" value="<? echo "$id"; ?>">  <label for="data">Data:</label>  <input name="data" type="text" id="data" size="11" value="<? echo "$data"; ?>">   <br />  <label for="cliente">Cliente</label><br />  <input name="cliente" type="text" id="novo_cliente" size="30" value="<? echo "$cliente"; ?>">   <br />  <label for="mensagem">Relatório</label>  <br />  <textarea name="mensagem" method = "post" cols="41" rows="7" class="frm_input" id="descricao" style="caixa" onKeyUp="return  Contador('descricao',300);"><? echo "$text"; ?></textarea>  <input name="contador" disabled type="text"  class="caixa2" id="contador" size="7" maxlength="7">  <br />  <label for="arquivo">Imagem</label><br />  <input type="file" name="arquivo">  <br />  <input type="submit" name="Submit" value="Enviar"></form></body></html>

class_update.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'], 100, 70, $diretorio.$nome_thumb);		echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$this->arquivo['error']]."</span>";		 // -Banco de Dados - //				$id_novo = $_POST['id'];		$data = $_POST['data'];		$cliente = $_POST['cliente'];				$text = $_POST['mensagem'];				$sql = "UPDATE relatorio SET  data='$data',cliente='$cliente',nome_thumb='$$nome_thumb',nome_foto='$nome_foto',text='$text' WHERE id_relatorio=$id_novo ";//		$sql = "insert INTO relatorio  Values ('','$data','$cliente','$nome_thumb','$nome_foto','$text')";		$query = mysql_query($sql);			   		mysql_close($conexao);	  	}	}?>

Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não estou conseguindo fazer o upload, esta dando o seguinte erro: Fatal error: Call to undefined function imagecreatetruecolor() in C:\Arquivos de programas\Apache Group\Apache\htdocs\upload\funcoes.php on line 22Agradeço pela ajudo e aguardo respostas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Pessoal!!

 

Dei uma olhada no código, pois precisava a parte de dimensionar

a foto, mas não consigo fazr funcionar de jeito nenhum.......

Será q alguém pode me ajudar!?

 

O meu código é este:

<?php require_once('conecta.php'); ?> 
<?php 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")  
{ 
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue; 

  switch ($theType) { 
	case "text": 
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
	  break;	 
	case "long": 
	case "int": 
	  $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
	  break; 
	case "double": 
	  $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; 
	  break; 
	case "date": 
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
	  break; 
	case "defined": 
	  $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
	  break; 
  } 
  return $theValue; 
}

$editFormAction = $_SERVER['PHP_SELF']; 
if (isset($_SERVER['QUERY_STRING'])) { 
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); 
}  

// Aqui, pegamos o nome e o nome temporário da imagem enviada. 
$foto = $_FILES["foto_foto"]["name"]; 
$fotoTmp = $_FILES["foto_foto"]["tmp_name"];
$fotoSize = $_FILES["foto_foto"]["size"];
$fotoTipo = $_FILES["foto_foto"]["type"];

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
 if($fotoSize >= "51200"){
   $erro =  ("WARNING: Arquivo é maior que o permitido!");
}
 if($erro != ""){
  echo "$erro";
  }
  else{
// Acrescentamos o campo: foto_data. 
// Em VALUES, alteramos o primeiro %s por '$foto'; e acrescentamos o comando NOW().
mysql_select_db($database); 
	$query_rsUltimaFoto = "SELECT *, date_format(foto_data, '%d/%m/%Y') AS foto_data FROM w_floricultura ORDER BY foto_id DESC"; 
	$rsUltimaFoto = mysql_query($query_rsUltimaFoto) or die(mysql_error()); 
	$row_rsUltimaFoto = mysql_fetch_assoc($rsUltimaFoto); 
	$totalRows_rsUltimaFoto = mysql_num_rows($rsUltimaFoto); 
	$fotoRequisitada = $row_rsUltimaFoto['foto_id'];
	$foto = $row_rsUltimaFoto['foto_id']+1;
$insertSQL = sprintf("INSERT INTO w_floricultura (foto_foto, foto_titulo, foto_valor, foto_legenda, foto_data) VALUES ('$foto', %s, %s, %s, NOW())", 
					   GetSQLValueString($_POST['foto_titulo'], "text"),
					   GetSQLValueString($_POST['foto_valor'], "text"), 
					   GetSQLValueString($_POST['foto_legenda'], "text"));
					   
// Função que cria a imagem, não trabalharemos com upload. 
function reduz_imagem($img, $max_x, $max_y, $fotoTmp) {

//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);
$dimensao = $_POST["dimensao"];
		if ($dimensao=='H'){
		   $tamanho_x= 500;
		   $tamanho_y= 375;
		}elseif ($dimensao=='V'){
		   $tamanho_y= 500;
		   $tamanho_x= 375;} 	
$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, $fotoTmp, 100);

}

$pasta = "fotos"; //Nome da pasta para onde vão os arquivos
if (copy($fotoTmp, "$pasta/".$foto)){
echo("<font face=verdana size=1><b>Arquivo enviado com sucesso!</b></font>");
}else{
echo ("<font face=verdana size=1><b>Erro no envio do arquivo!</b></font>");
}
  mysql_select_db($database); 
  $Result1 = mysql_query($insertSQL) or die(mysql_error());
}
	$insertGoTo = "index.php"; 
	if (isset($_SERVER['QUERY_STRING'])) { 
	  $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; 
	  $insertGoTo .= $_SERVER['QUERY_STRING']; 
  } 
  header(sprintf("Location: %s", $insertGoTo));
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Postar foto</title> 
</head> 

<body> 

<h1>Postagem de fotos</h1>
 
<html>
<body>
<form action="<?php echo $editFormAction; ?>" method="post" enctype="multipart/form-data" name="form1">
<table align="center">
		  <tr valign="baseline">
			<td width="106" align="right" nowrap>Foto:</td>
			<td width="375"><input name="foto_foto" type="file" size="32" />
		  </tr>
		  <tr valign="baseline">
			<td nowrap align="right">Nome:</td>
			<td><input type="text" name="foto_titulo" value="" size="32" /></td>
		  </tr>
		  <tr valign="baseline">
			<td nowrap align="right">Valor:</td>
			<td><input type="text" name="foto_valor" value="" size="32" /></td>
		  </tr>
		  <tr valign="baseline">
			<td nowrap align="right" valign="top">Descrição:</td>
			<td><textarea name="foto_legenda" cols="50" rows="5"></textarea>
			</td>
		  </tr>
		  <tr valign="baseline">
			<td nowrap align="right">Dimensionar foto:</td>
			<td>	  <input name="dimensao" type="radio" value="V" checked="CHECKED" />
			  Vertical 
				<input name="dimensao" type="radio" value="H" />
			  Horizontal</td></tr>
		  <tr valign="baseline">
			<td height="27" align="right" nowrap> </td>
			<td><input name="submit" type="submit" value="Postar Foto" /></td>
		  </tr>
		  </table>
		  <input type="hidden" name="MM_insert" value="form1">
</form>
</body>
</htm>

Fico no aguardo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae deixa avisado para habilitar a biblioteca GD, o meu aki nao tava funfanfo, dai eu lembrei de habilitar a GD agora ta show vlws otimo tuto cara

 

flwss

 

alguem poderia ajudar, tentei habilitar a função GD, ativando a linha php_gd2.dll dentro do php.ini, porém não contínua não estar funcionando.

 

Então meu pedido são:

1) alguem poderia colocar o sistema completo para download?

 

2) como habilitar o GD, e como verificar se o GD está habilitado localmente.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.