start_check()) { if(!empty($imgdataorfile)) { if($datatype == "image") { //não veio um nome de arquivo, veio uma imagem mesmo. //logo, cria-se um arquivo temporário para a bichinha para que a funcao open //nao se mate(muito). //atencao: use fromstring($imgdata) quando não passar pelo construtor $filename = IMGMANIP_TMP . "/" . time() . ".imgmaniptmpfile"; $this->imgfile = $filename; $fp = fopen($filename,"w"); fputs($fp,$imgdataorfile); fclose($fp); } else { $this->imgfile = $imgdataorfile; } $this->open(); } } else { //problemas. return false; } } else { return false; } } // funcao de reconstrucao function rec($imgdata = ""){ if(is_a($this, __CLASS__)){ $filename = IMGMANIP_TMP ."/". time() . ".imgmaniptmpfile"; $this->imgfile = $filename; $fp = fopen($filename,"w"); fputs($fp,$imgdata); fclose($fp); $this->open(); } else { //problemas. return false; } } /* verificaçao de inicializaçao - funçao de apoio */ function start_check() { if(is_a($this,__CLASS__)) { /* verificando a existência da exif */ if(!function_exists("exif_imagetype")) { $this->isOk = false; $this->err = "EXIF library was not found."; return false; } /* * Verificando existência da GD */ if(!function_exists("imagecreate")) { $this->isOk = false; $this->err = "GD library was not found."; return false; } //verificaçoes de tipos de imagens e truecolor if(function_exists("imagecreatetruecolor")) { $this->can_truecolor = true; } if(function_exists("imagecreatefromjpeg")) { $this->read_jpeg = true; } if(function_exists("imagejpeg")) { $this->write_jpeg = true; } if(function_exists("imagecreatefromgif")) { $this->read_gif = true; } if(function_exists("imagegif")) { $this->write_gif = true; } if(function_exists("imagecreatefrompng")) { $this->read_png = true; } if(function_exists("imagepng")) { $this->write_png = true; } if(function_exists("imagecreatefromxbm")) { $this->read_xbm = true; } if(function_exists("imagexbm")) { $this->write_xbm = true; } if(function_exists("imagecreatefromxpm")) { $this->read_xpm = true; } if(function_exists("imagexpm")) { $this->write_xpm = true; } if(function_exists("imagecreatefromwbmp")) { $this->read_wbmp = true; } if(function_exists("imagewbmp")||function_exists("image2wbmp")) { $this->write_wbmp = true; } $this->isOk = true; return true; } else { return false; } } /* * Abre um arquivo de imagem */ function open($file = "") { if(is_a($this,__CLASS__)) { if(!empty($file)) { //não usa o arquivo padrão. $this->imgfile = $file; } else { $file = $this->imgfile; } if(file_exists($file)) { //verificando se é um tipo válido $type = exif_imagetype($file); $cont = false; if($type) { $this->imgtype = $type; switch ($type) { case IMAGETYPE_GIF: case IMAGETYPE_JPEG: case IMAGETYPE_JPEG2000: case IMAGETYPE_PNG: case IMAGETYPE_WBMP: case IMAGETYPE_XBM: $this->imgmime = image_type_to_mime_type($type); $cont = true; break; default: $cont = false; break; } if($cont) { //pegando o tamanho do arquivo $this->imgsize = filesize($file); //pegando os dados e armazenando em $this->imgdata $fp = fopen($file,"r"); $fbuf = fread($fp,$this->imgsize); $this->imgdata = $fbuf; // unset($fbuf); fclose($fp); unset($fp); //criando o resource da imagem $this->img = imagecreatefromstring($fbuf); $this->imgwidth = imagesx($this->img); $this->imgheight = imagesy($this->img); return true; } else{ $this->err = "$type é um tipo inválido de imagem"; return false; } } else { $this->err = "Tipo de arquivo inválido (não é uma imagem ou o formato não é suportado por este sistema."; return false; } } else { $this->err = "Arquivo $file não existe."; return false; } } else { return false; } } /* * Grava a imagem para um arquivo em formato jpeg * */ function jpeg($filename = "", $quality = "75") { if(is_a($this,__CLASS__)) { if($this->write_jpeg) { if(!empty($filename) && $filename != "tovar") { if(@imagejpeg($this->img,$filename,$quality)) { return true; } else { $this->err = "Ocorreu um erro ao gravar o arquivo da imagem. Verifique se você possui permissão para gravar o arquivo no diretório especificado."; return false; } } elseif($filename == "tovar"){ return imagejpeg($this->img,"",$quality); } else { if(@imagejpeg($this->img,"",$quality)) { return true; } else { $this->err = "Erro ao enviar a imagem para a saída padrão."; return false; } } } else { $this->err = "Formato de saída JPEG não suportado."; return false; } } else { return false; } } /* * Grava a imagem para um arquivo em formato gif * */ function gif($filename = "") { if(is_a($this,__CLASS__)) { if($this->write_gif) { if(!empty($filename)) { if(@imagegif($this->img,$filename)) { return true; } else { $this->err = "Ocorreu um erro ao gravar o arquivo da imagem. Verifique se você possui permissão para gravar o arquivo no diretório especificado."; return false; } } else { if(@imagegif($this->img)) { return true; } else { $this->err = "Erro ao enviar a imagem para a saída padrão."; return false; } } } else { $this->err = "Formato de saída GIF não suportado."; return false; } } else { return false; } } /* * Grava a imagem para um arquivo em formato png * */ function png($filename = "") { if(is_a($this,__CLASS__)) { if($this->write_png) { if(!empty($filename)) { if(@imagepng($this->img,$filename)) { return true; } else { $this->err = "Ocorreu um erro ao gravar o arquivo da imagem. Verifique se você possui permissão para gravar o arquivo no diretório especificado."; return false; } } else { if(@imagepng($this->img)) { return true; } else { $this->err = "Erro ao enviar a imagem para a saída padrão."; return false; } } } else { $this->err = "Formato de saída PNG não suportado."; return false; } } else { return false; } } /* * Grava a imagem para um arquivo em formato png * */ function wbmp($filename = "") { if(is_a($this,__CLASS__)) { if($this->write_wbmp) { if(!empty($filename)) { if(@imagewbmp($this->img,$filename)) { return true; } else { $this->err = "Ocorreu um erro ao gravar o arquivo da imagem. Verifique se você possui permissão para gravar o arquivo no diretório especificado."; return false; } } else { if(@imagewbmp($this->img)) { return true; } else { $this->err = "Erro ao enviar a imagem para a saída padrão."; return false; } } } else { $this->err = "Formato de saída WBMP não suportado."; return false; } } else { return false; } } /* * remover o arquivo temporario */ function rmfile($name=""){ if(is_a($this, __CLASS__)){ if(empty($name)){ $name = $this->imgfile; } if(!is_file($name)){ $this->err = "arquivo nao encontrado"; return false; } else{ unlink($name); return true; } } else{ return false; } } /* * abertura de imagens pelos dados da mesma */ function fromstring($imgdata = "") { if(is_a($this,__CLASS__)) { if(!empty($imgdata)) { $filename = IMGMANIP_TMP . "/" . time() . ".imgmaniptmpfile"; $this->imgfile = $filename; $fp = fopen($filename,"w"); fputs($fp,$imgdata); fclose($fp); $this->open(); } else { $this->err = "String com dados da imagem não foi informado."; return false; } } else { return false; } } /* * The real work. resample. */ function redim($x = "", $y = "",$prop = false) { if(is_a($this,__CLASS__)) { if(empty($x)) { $x = $this->maxwidth; } if(empty($y)) { $y = $this->maxheight; } if($prop) { //calculando qual é o tamanho ideal para manter a proporção if($this->imgwidth == $this->imgheight) { //ok. manda redimensionar "quadraticamente.". if(($x > $y) || ($x == $y)) { $xo = $x; $yo = $x; } elseif($y > $x) { $xo = $y; $yo = $y; } } elseif($this->imgwidth > $this->imgheight) { //calcula a proporçao pelo $x (sendo ele maior, o valor máximo de $xo é $x, $y é //calculado proporcional $xo = $x; //calculando o percentual de reduçao/aumento $xp = (int) (($xo * 100) / $this->imgwidth); //ok. calcula a altura proporcional $yo = (int) (($this->imgheight * $xp)/100); } elseif($this->imgwidth < $this->imgheight) { //calcula a proporçao pelo $y (sendo ele maior, o valor máximo de $yo é $y, $x é //calculado proporcional $yo = $y; //calculando o percentual de reduçao/aumento $yp = (int) (($yo * 100) / $this->imgheight); //ok. calcula a altura proporcional $xo = (int) (($this->imgwidth * $yp)/100); } } else { //não é redução proporcional. $xo = $x; $yo = $y; } if(!$this->use_magic) { if($this->can_truecolor) { //posso usar imagens truecolor. $img = imagecreatetruecolor($xo,$yo); } else { $img = imagecreate($xo,$yo); } if(@imagecopyresampled($img,$this->img,0,0,0,0,$xo,$yo,$this->imgwidth,$this->imgheight)) { $this->imgorig = $this->img; $this->img = $img; return true; } else { $this->err = "Erro redimendionando a imagem."; return false; } } else { //código a ser feito (ainda) para magicwand ImageMagick API } } else { return false; } } //saída padrão function out($file = "") { if(is_a($this,__CLASS__)) { if(preg_match("/same/",$file)) { $file = $this->imgfile; } switch($this->imgtype) { case IMAGETYPE_GIF: return $this->gif($file); break; case IMAGETYPE_JPEG: case IMAGETYPE_JPEG2000: return $this->jpeg($file); break; case IMAGETYPE_PNG: return $this->png($file); break; case IMAGETYPE_WBMP: return $this->wbmp($file); break; default: return false; } $this->rmfile($file); } else { return false; } } } ?> <?=CLIENT_TITLE?>

Notícias