Jump to content


Photo

Upload De Multiplas Imagens Com Thumbs...


  • Faça o login para participar
2 replies to this topic

#1 SlyX

SlyX

    12 Horas

  • Usuários
  • 178 posts
  • Sexo:Não informado

Posted 10/10/2007, 16:31

Seguinte, sempre usei o sisteminha do fabyo para fazer upload e criar os thumbs da imagem..

function reduz_imagem($img, $max_x, $max_y, $nome_foto) {		list($width, $height) = getimagesize($img);		$original_x = $width;		$original_y = $height;		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, 80);	}	function Verifica_Upload() {		$this->imagem = isset($_FILES['imagem']) ? $_FILES['imagem'] : 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 = "../../novidades/";		$nome_foto  = "imagem_".time().".jpg";		$this->reduz_imagem($this->arquivo['tmp_name'], 280, 600, $diretorio.$nome_foto);		$data = date("Y-m-d");		$titulo_br = $_POST['titulo'];		$descricao_br = $_POST['descricao'];	 	$query="insert into tabela(id,data,titulo,descricao,imagem) values('','$data','$titulo_br','$titulo_en','$descricao_br','$descricao_en','$nome_foto')";		$res = parent::gravar($query);		return $res;	}

a questao é que agora.. eu to querendo fazer ele multiplo, tipo, os arquivos vem de um array:

como exemplo segue o array, com upload de 3 fotos (esta array podera ser infinta)

Array(	[imagem] => Array		(			[name] => Array				(					[0] => dolls_complete_set___full_view.png					[1] => Urban_Text.jpg					[2] => imagem3.jpg				)			[type] => Array				(					[0] => image/png					[1] => image/jpeg					[2] => image/jpeg				)			[tmp_name] => Array				(					[0] => C:\WINDOWS\TEMP\php5A.tmp					[1] => C:\WINDOWS\TEMP\php5B.tmp					[2] => C:\WINDOWS\TEMP\php5C.tmp				)			[error] => Array				(					[0] => 0					[1] => 0					[2] => 0				)			[size] => Array				(					[0] => 612395					[1] => 471877					[2] => 23877				)		))

entao eu teria que fazer o mesmo sistema, soh que usando um sizeof para ele ir repetindo a ação de reduzir e gerar o thumbnail...

soh que nao conseguie fazer funcionar, alguem ja fez algo parecido que possa me ajudar?

resolvi o meu problema
function reduz_imagem($img, $max_x, $max_y, $nome_foto) {		list($width, $height) = getimagesize($img);		$original_x = $width;		$original_y = $height;		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, 80);	}	function envia_Foto() {		if($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 = "../../imagens_artigos/";		for($i = 0; $i < sizeof($_FILES['imagem']['name']); $i++) {			$nome_foto  = "imagem_".time().$i.".jpg";			$this->reduz_imagem($_FILES['imagem']['tmp_name'][$i], 280, 600, $diretorio.$nome_foto);		$data = date("Y-m-d");		$titulo_br = $_POST['titulo'];		$descricao_br = $_POST['descricao'];	 	$query="insert into tabela(id,data,titulo,descricao,imagem) values('','$data','$titulo_br','$titulo_en','$descricao_br','$descricao_en','$nome_foto')";		$res = parent::gravar($query);		}		return $res;	}

agora falta fazer um verificador :D

Edição feita por: boirock, 10/10/2007, 21:28.
E dizem que no oitavo dia Deus criou o [codebox]

MSN: fabiovaz arroba gmail.com

#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 10/10/2007, 16:33

Quem é fabyo? :rolleyes:

Bom, não entendi muito bem o primeiro script não mas o loop que você fará usando esta estrutura de array, será a seguinte:
<?php

foreach( $arr['imagem'] as $imagem )
{
	$f_name = $imagem['name'];
	$f_temp = $imagem['tmp_name'];
	$f_type = $imagem['type'];
	$f_size = $imagem['size'];
	
	// executa ação para fazer upload
}

?>

Deu pra entender? Neste caso, independente do número de elementos dentro da posição imagem do seu array, o loop será feito.

Flws...
(ok2)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 WellingtonSousa

WellingtonSousa

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 27/08/2008, 10:10

Como eu faria para gerar os thumbnails de imagens gravadas no banco?




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq