Ir para conteúdo

POWERED BY:

Arquivado

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

Felipe_ls

Class para tratamento de Imagens

Recommended Posts

Olá galera!!

 

Esta é uma classe que estou desenvolvendo nos momentos de "ociosidade" no trampo...

Por enquanto ela não está fazendo nada de excepcional, na verdade, a única coisa que ela faz, por enquanto, é redimensionar a imagem e "juntar" duas imagens em uma. http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

Mas já reduz bastante código...

 

Pra usar é facil, exemplos:

 

//redimensionamento$img = new Image('teste.jpg');$img->resize(150,100);$img->save('fotonova.gif');//juncao de duas imagens$img1 = new Image('image1.jpg');$img2 = new Image('image2.gif');// argumentos: 1-objeto da segunda img, 2-posicao horizontal da sobreposicao// 3-posicao vertical da sobreposicao, 4-porcentagem de transparencia (0=transparente,100=opaco)$img1->merge($img2,100,100,25);$img1->save('novaimg.jpg');

Lembrando que no momento de salvar, usando o metodo "save()", a classe identifica o formato de saída de acordo com o nome passado, no primeiro exemplo acima foi aberta uma imagem JPEG, redimensionada e salva como "GIF"...

 

Façam bom proveito, e se possível dêem críticas e sugestões de melhorias!

 

Valeu!

 

<?php############################################# Classe Image 0.0.2 Alpha				 ############################################## Criador: Felipe Lucio da Silva		   ## Data: 22/07/06						   ## Email Contato: felipels[at]msn.com	   ##==========================================## Esta classe foi criada com o			 ## intuito de facilitar o redimensionamento ## e outros processos como marca d'agua,	## e quem sabe, daqui algum tempo, ate	  ## alguns desenhos simples na imagens (!!)  ##										  ## Ela está livre para o uso e melhoria,	## caso modifique, por favor, disponibilize ## a modificação. E lembre-se de me avisar  ## pelo email!							  #############################################class Image{	public $name;	public $x;	public $y;	public $mime;	public $path;	public $resource;		// Construtor, recebe argumento com o path/nome da img a ser aberta	public function __construct($path)	{		if(is_file($path))		{			$temp	   = @getimagesize($path);			$this->mime = $temp['2'];			$this->x	= $temp['0'];			$this->y	= $temp['1'];			// Separa o path do nome da imagem			$this->path = explode('/',$path); 			$this->name = array_pop($this->path);			$this->path = implode('/',$this->path);					// Abre o resource já na inicialização do Objeto			$this->open();		  		}	}	// Abre o resource da imagem "dinamicamente" (ou quase isso) =P	public function open()	{		if(is_file($this->path.$this->name))		{			switch($this->mime)			{				case 1:					$this->resource = @imagecreatefromgif($this->path.$this->name);					break;				case 2:					$this->resource = @imagecreatefromjpeg($this->path.$this->name);					break;				case 3:					$this->resource = @imagecreatefrompng($this->path.$this->name);					break;				case 6:					$this->resource = @imagecreatefromwbmp($this->path.$this->name);					break;				default:					$this->resource = false;					break;			}		}			}	// Metodo para "juntar" duas imagens, os argumentos sao	// $sImg - outro objeto da classe Image	// $dX e $dY - posicao x e y onde a segunda imagem vai sobrepor a original	// $alpha - transparencia: 0 - transparente, 100 simplesmente copia	// $sX e $sY - Serve para pegar somente uma parteda img original	// $sW e $sH - Altura e Largura do "box" de sobreposicao	public function merge(Image $sImg,$dX=0,$dY=0,$alpha=100,$sX=0,$sY=0,$sW=FALSE,$sH=FALSE)	{		if(!$sW)	{			$sW = $sImg->x;		}				if(!$sH)		{			$sH = $sImg->y;	}				imagealphablending($sImg->resource,TRUE);		imagecopymerge($this->resource,$sImg->resource,$dX,$dY,			$sX,$sY,$sW,$sH,$alpha);		imagealphablending($sImg->resource,FALSE);	}		// Metodo para Redimensionar a img, e so colocar o novo tamanho de x e y	public function resize($newX,$newY)	{		if($this->resource) 		{			$newImg = imagecreatetruecolor($newX,$newY);			imagecopyresampled($newImg,$this->resource,0,0,0,0,$newX,$newY,$this->x,$this->y);			$this->resource = $newImg;			$this->x = $newX;			$this->y = $newY;		}		else		{			return false;		}	}   	// Metodo para salvar as alteracoes feitas na imagem, se não passar argumentos	// ele simplesmente sobrepoe o arquivo original	public function save($name='')	{		// Limpa a string		$name = trim($name);		// se nao foi passado argumento a classe pega os dados da imagem original		if($name=='')		{			$name = $this->path.$this->name;		}		// Pega o formato de acordo com a extensao do nome passado como argumento		$format = strtolower(substr($name,-3,3));		switch($format)		{			case 'gif':				imagegif($this->resource,$name);				break;			case 'peg':			case 'jpg':				imagejpeg($this->resource,$name);				break;			case 'png':				imagepng($this->resource,$name);				break;			case 'bmp': 				imagewbmp($this->resource,$name);				break;			default:				return false;				break;		}	}		public function __destruct()	{		@imagedestroy($this->resource);		@imagedestroy($newImg);	}}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito bom o scriptparabens =]EDITADO:esta dando erro no script Felipe_ls...apareceu este erro aki:Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in E:\webmaster\moi\redimensionar.php on line 4linha 4: public $name;versão do meu PHP é 4.3.9abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops, esqueci de avisar, essa classe so funciona com PHP 5... =/Para utilizar no PHP 4 tem que fazer algumas modificações, como as visibilidades, os metodos __construct e __destruct, que nao existiam no PHP 4...Valeu pelo comentario!OBS: Acabei de atualizar a classe, agora ela "junta" duas img em uma so, com transparencia ou nao....

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.