Cree la nueva version del EasyThumbnail.
Agrege public y private a peticion del publico.
Nuevas funciones:
- Capas de crear bordes a las imagenes
- Editar imagenes GIF y PNG con trasparencia
- Crear una imagen desde 0 con el formato elejido
- Editar imagen desde posision X1 Y1 a la X2 Y2
- Insertar lineas
- Funcion que te dice los errores producidos
- Insertar imagen (codigo HTML)
- Modernización del código
Codigo:
Código PHP:
<?php
/******************************************************************************\
** *****************************************************************************
** EasyThumbnail **
** *****************************************************************************
** Nombre : EasyThumbnail **
** **
** Creador : Pato12 <de Forosdelweb.com> **
** **
** Description : Sirve para redimensionar una imagen, para crear Thumbnail **
** y para escribir una imagen fácilmente. **
** **
** Contacto : MP de forosdelweb.com al usuario Pato12 **
** **
** Version : 2.0 (BETA) **
** **
** Web del **
** creador : www.halfmusic.com.ar **
********************************************************************************
********************************************************************************
* Este scriopt PHP es libre de usar siempre cuando no borren estas lineas
* y respeten la licencia GPL :
* http://opensource.org/licenses/gpl-license.php GNU Public License
\******************************************************************************/
class EasyThumbnail{
private $imagen;
private $image;
private $height;
private $width;
private $error=array();
private $calidad;
private $srcw;
private $srch;
private $ext;
private $et;
private $x=array(0,0);
private $y=array(0,0);
public function __construct($e,$w = 60,$h = 60,$u = "#FFFFFF"){
$this->et=$e;
if($e=="edit"){
$str=$w;
if(!file_exists($str))
$this->error('El archivo '.$str.' no existe.');
$this->detecExt($str);
switch($this->ext){
case "JPG":
$this->ext="JPEG";
$this->imagen = ImageCreateFromJPEG ($str);
break;
case "JPEG":
$this->ext="JPEG";
$this->imagen = ImageCreateFromJPEG ($str);
break;
case "PNG":
$this->ext="PNG";
$this->imagen = ImageCreateFromPNG ($str);
imageAlphaBlending($this->imagen, false);
imageSaveAlpha($this->imagen, true);
break;
case "GIF":
$this->ext="GIF";
$this->imagen= ImageCreateFromGIF ($str);
break;
default:
$this->error("Extencion del archivo a editar no valida.");
break;
}
$this->srcw=@imagesx($this->imagen);
$this->srch=@imagesy($this->imagen);
$this->calidad=75;
$this->automatico(75);
}elseif($e=="new"){
$this->width($w);
$this->height($h);
$this->image = ImageCreateTrueColor($this->width,$this->height);
list($c1,$c2,$c3)=$this->detecColor($u);
$c=@imagecolorallocate($this->image, $c1,$c2,$c3);
@imagefill($this->image,0,0,$c);
}
}
public function recortar($x1 = 0,$y1 = 0,$x2 = 0,$y2 = 0){
$this->x[1]=$x1;
$this->x[2]=$x2;
$this->y[1]=$y1;
$this->y[2]=$y2;
}
private function detecExt($str,$t = false){
if(!$t){
$this->ext=ereg_replace(".*\.(.*)$","\\1",$str);
$this->ext=strtoupper($this->ext);
}else{
$e=ereg_replace(".*\.(.*)$","\\1",$str);
$e=strtoupper($e);
return $e;
}
}
public function height($str=50){
if($str<50)
$str=@floor($this->srch*$this->width/$this->srcw);
$this->height = $str;
}
public function width($str=50) {
if($str<50)
$str=@floor($this->srcw*$this->height/$this->srch);
$this->width = $str;
}
public function calidad($str=75){
$this->calidad=$str;
}
public function automatico($str=50) {
if ($this->srcw<$this->srch) {
$this->height=$str;
$this->width=@floor($this->srcw*$this->height/$this->srch);
}else{
$this->width=$str;
$this->height=@floor($this->srch*$this->width/$this->srcw);
}
if ($this->width>$this->srcw && $this->height>$this->srch) {
$this->width=$this->srcw;
$this->height=$this->srch;
}
}
public function text($t,$x=0,$y=0,$u="#000000",$f=NULL,$f2=20,$a=0){
list($c1,$c2,$c3)=$this->detecColor($u);
if($this->et=="edit")
$c=@imagecolorallocate($this->imagen,$c1,$c2,$c3);
elseif($this->et=="new")
$c=@imagecolorallocate($this->image,$c1,$c2,$c3);
if($this->et=="edit"){
if($f==NULL)
@imagestring($this->imagen,$f2,$x,$y,$t,$c);
else
@imagettftext($this->imagen, $f2, $a, $x, $y, $c, $f, $t);
}elseif($this->et=="new"){
if($f==NULL)
@imagestring($this->image,$f2,$x,$y,$t,$c);
else
@imagettftext($this->image, $f2, $a, $x, $y, $c, $f, $t);
}
}
public function borde($px = 1,$u){
$px=($px-1);
for($i=0;$i<=$px;$i++){
$this->linea(0,$i, $this->width,$i,$u);
$this->linea($i,$this->height,$i,0,$u);
$this->linea(0,($this->height-$i)-1,$this->width,($this->height-$i)-1,$u);
$this->linea(($this->width-$i)-1,0, ($this->width-$i)-1, $this->height, $u);
}
}
public function linea($x1,$y1,$x2,$y2,$u = "#000000"){
list($c1,$c2,$c3)=$this->detecColor($u);
if($this->et=="edit"){
$c=@imagecolorallocate($this->imagen,$c1,$c2,$c3);
@imageline($this->imagen,$x1,$y1,$x2,$y2,$c);
}elseif($this->et=="new"){
$c=@imagecolorallocate($this->image,$c1,$c2,$c3);
@imageline($this->image,$x1,$y1,$x2,$y2,$c);
}
}
private function detecColor($u){
if(strchr($u,"#"))
return @sscanf($u,'#%2x%2x%2x');
else
return @sscanf($u,'%2x%2x%2x');
}
private function error($t){
$this->error[]="<li>".$t."</li>";
}
public function errores(){
if(!empty($this->error))
return "Errores detectados:<ul>".implode("\n",$this->error)."</ul>";
}
public function crear($dir, $fun = NULL) {
if($this->et=="edit"){
if($dir=="")
return false;
if($this->width=="" && $this->height=="")
$this->error('No se a selecionado un tamaño.');
$this->image = @ImageCreateTrueColor($this->width,$this->height);
if($this->ext=="GIF"){
$color=imagecolortransparent($this->imagen);
if($color!=-1){
$trnprt_color = @imagecolorsforindex($this->imagen, $color);
$trnprt_indx = @imagecolorallocatealpha($this->image, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue'], $trnprt_color['alpha']);
@imagefill($this->image, 0, 0, $trnprt_indx);
@imagecolortransparent($this->image, $trnprt_indx);
}
}
@imagecopyresampled ($this->image, $this->imagen, $this->x[1], $this->y[1], $this->x[2], $this->y[2],$this->width ,$this->height ,$this->srcw , $this->srch);
switch($this->detecExt($dir,true)){
case "JPG":
$creat=@imageJPEG($this->image,$dir,$this->calidad);
break;
case "JPEG":
$creat=@imageJPEG($this->image,$dir,$this->calidad);
break;
case "PNG":
$creat=@imagePNG($this->image,$dir);
break;
case "GIF":
$creat=@imageGIF($this->image,$dir);
break;
default:
$this->error("Extencion del archivo a crear no valida.");
break;
}
}elseif($this->et=="new"){
$this->detecExt($dir);
switch($this->ext){
case "JPG":
$creat=@imageJPEG($this->image,$dir,$this->calidad);
break;
case "JPEG":
$creat= @imageJPEG($this->image,$dir,$this->calidad);
break;
case "PNG":
$creat=@imagePNG($this->image,$dir);
break;
case "GIF":
$creat=@imageGIF($this->image,$dir);
break;
default:
$this->error("Extencion del archivo a crear no valida.");
break;
}
}
if($creat)
@imagedestroy($this->image);
else
$this->error("No se pudo crear el archivo \"".$dir."\", porque no se a podido abrir el archivo base.");
if($fun=="ver" && $creat)
echo "<img src=\"".$dir."\" width=\"".$this->width."\" height=\"".$this->height."\" />";
}
}
?>
Para edita una imagen:
Código PHP:
$t= new EasyThumbnail("edit",'logo.jpg');
Código PHP:
$t= new EasyThumbnail("new",width,height,color de fondo HTML);
Despues para ver los errores que se produsieron:
Código PHP:
echo $t->errores();
Código PHP:
$t->borde(GROSOR,COLOR HTML);
Código PHP:
$t->recortar(X1,Y1,X2,Y2);
Código PHP:
$t->linea(X1,Y2,X2,Y2,COLOR HTML);
Código PHP:
$t->crear(NOMBRE DE LA IMAGEN A CREAR);
Código PHP:
$t->crear(NOMBRE DE LA IMAGEN A CREAR,"ver");
Salu2