vini_loock Postado Novembro 16, 2010 Denunciar Share Postado Novembro 16, 2010 (editado) <?php /*----------------------------------------------------------------------------------------------------// //----------------------------Class de tratamento de imagem - PHP-------------------------------------// //----------------------------------------------------------------------------------------------------// //-----Todos os direitos reservados - Vinicius Siuta Borges-------------------------------------------// //-----Contato: viniciussiutaborges@hotmail.com-------------------------------------------------------// //--------||--: viniciussiutaborges@gmail.com---------------------------------------------------------// //----------------------------------------------------------------------------------------------------*/ class Images{ private $file, $file_name, $file_ext, $file_width, $file_height; private $ext_validas = array('jpg', 'jpeg', 'png', 'gif', 'wbmp'); private $create, $create_tc; private $error = array(); private $tmp_dir = 'temp', $tmp_name; public function __construct($file){ $this->start($file); } public function start($file){ if(is_file($file)){ $info = pathinfo($file); $this->file = $file; $this->file_name = $info['filename']; $this->file_ext = $info['extension']; list($this->file_width, $this->file_height) = getimagesize($this->file); } return false; } public function valida(){ if(in_array($this->file_ext, $this->ext_validas)){ return true; } return false; } public function setImage($file){ $this->start($file); } public function getImage(){ return $this->file; } public function getError(){ return $this->error; } public function getTempFile(){ return $this->tmp_dir.'/'.$this->tmp_name.$this->file_name.'.'.$this->file_ext; } private function create(){ switch($this->file_ext){ case 'jpg': case 'jpeg': $this->create = imagecreatefromjpeg($this->file); break; case 'gif': $this->create = imagecreatefromgif($this->file); break; case 'png': $this->create = imagecreatefrompng($this->file); break; case 'wbmp': $this->create = imagecreatefromwbmp($this->file); break; default: $this->error[] = 'Erro ao criar imagem'; break; } } public function resize($width = null, $height = null, $type = 'relative', $finish = 'salvar', $qualidade = 80){ $this->create(); switch($type){ case 'to_width': $this->resize_toWidth($width); break; case 'to_height': $this->resize_toWidth($width); break; case 'relative': $this->resize_relative($width, $height); break; } $this->finaliza($finish); } private function resize_relative($width, $height){ $porcentagem = ($width*100)/$this->file_width; $new_height = ($this->file_height*$porcentagem)/100; if($new_height > $height){ $porcentagem = ($height*100)/$this->file_height; $width = ($this->file_width*$porcentagem)/100; }else{ $height = $new_height; } $this->create_tc = imagecreatetruecolor($width, $height); @imagecopyresampled($this->create_tc, $this->create, 0, 0, 0, 0, $width, $height, $this->file_width, $this->file_height); } private function resize_toWidth($width){ $porcentagem = ($width*100)/$this->file_width; $height = ($this->file_height*$porcentagem)/100; $this->create_tc = imagecreatetruecolor($width, $height); @imagecopyresampled($this->create_tc, $this->create, 0, 0, 0, 0, $width, $height, $this->file_width, $this->file_height); } private function resize_toHeight($height){ $porcentagem = ($height*100)/$this->file_width; $width = ($this->file_height*$porcentagem)/100; $this->create_tc = imagecreatetruecolor($width, $height); @imagecopyresampled($this->create_tc, $this->create, 0, 0, 0, 0, $width, $height, $this->file_width, $this->file_height); } public function crop($width = 0, $height = 0, $top = 0, $left = 0, $finish = 'salvar', $qualidade = 80){ $this->create(); $this->create_tc = imagecreatetruecolor($width, $height); @imagecopyresampled($this->create_tc, $this->create, 0, 0, $left, $top, $width, $height, $width, $height); $this->finaliza($finish, $qualidade); } public function flip($direction = 'horizontal', $finish = 'salvar', $qualidade = 80){ $this->create(); if($direction == 'horizontal'){ $this->flip_horizontal(); }else{ $this->flip_vertical(); } $this->finaliza($finish, $qualidade); } private function flip_horizontal(){ $this->create_tc = imagecreatetruecolor($this->file_width, $this->file_height); for($i = 0; $i < $this->file_width; $i++){ @imagecopy($this->create_tc, $this->create, $i, 0, $this->file_width-$i-1, 0, 1, $this->file_height); } } private function flip_vertical(){ $this->create_tc = imagecreatetruecolor($this->file_width, $this->file_height); for($i = 0; $i < $this->file_height; $i++){ @imagecopy($this->create_tc, $this->create, 0, $i, 0, $this->file_height-$i-1, $this->file_width, 1); } } public function finaliza($finish = 'salvar', $qualidade = 80){ if($finish == 'salvar'){ $this->salva($qualidade); }else{ $this->mostra($qualidade); } } private function geraNome(){ $this->tmp_name = date('YmdHis').rand(0,999); } private function mostra($qualidade){ switch($this->file_ext){ case 'jpg': case 'jpeg': imagejpeg($this->create_tc, null, $qualidade); header("Content-type: image/jpeg"); imagedestroy($this->create_tc); break; case 'png': imagepng($this->create_tc, null, $qualidade); header("Content-type: image/jpeg"); imagedestroy($this->create_tc); break; case 'gif': imagegif($this->create_tc, null, $qualidade); header("Content-type: image/jpeg"); imagedestroy($this->create_tc); break; case 'wbmp': imagewbmp($this->create_tc, null, $qualidade); header("Content-type: image/jpeg"); imagedestroy($this->create_tc); break; default: $this->error[] = 'Erro ao exibir imagem'; break; } } private function salva($qualidade){ $this->geranome(); switch($this->file_ext){ case 'jpg': imagejpeg($this->create_tc, $this->tmp_dir.'/'.$this->tmp_name.$this->file_name.'.'.$this->file_ext, $qualidade); imagedestroy($this->create_tc); break; case 'png': imagepng($this->create_tc, $this->tmp_dir.'/'.$this->tmp_name.$this->file_name.'.'.$this->file_ext, $qualidade); imagedestroy($this->create_tc); break; case 'gif': imagegif($this->create_tc, $this->tmp_dir.'/'.$this->tmp_name.$this->file_name.'.'.$this->file_ext, $qualidade); imagedestroy($this->create_tc); break; default: $this->error[] = 'Erro ao salvar imagem'; return false; break; } } } ?> Editado Agosto 6, 2011 por vini_loock Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
vini_loock
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.