Felipe_ls 0 Denunciar post Postado Julho 23, 2006 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
crucifier 0 Denunciar post Postado Julho 31, 2006 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
Felipe_ls 0 Denunciar post Postado Agosto 3, 2006 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