Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/03/2013, 22:27
underwebinfo
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 12 años, 1 mes
Puntos: 9
Respuesta: Como logro esto en php [Class]

Implemente lo que me dijiste, pero [no se si sera por esto.] me da un error con la carpeta a donde iria el thumbnail, retorne la url de la carpeta destino y es perfecta a lo que no entiendo por que no se podria guardar...

La clase:
-----------
<?
class Thumbnails{

# Forma de uso
# $thumb = new Thumbnails($file);
# $thumb->width($size)->height($size)->generate($path);
# $thumb->width($size)->generate($path);
# $thumb->height($size)->generate($path);
# $thumb->auto($size)->generate($path);

// ----- Variables -----
private $types = 'jpg,jpeg,png,gif,wbmp';
private $thumb = NULL;
private $error = NULL;

// ----- Constructor -----
public function __construct($file){

# Asignaciones
$this->thumb = array();

# Inicializar
$this->init($file);

}


// ----- Inicializador -----
private function init($file){

# Detectando formato.
$Type = explode('.',$file);
$this->thumb['type'] = strtolower(end($Type));

# Creando imagen segun formato.
if($this->thumb['type']=='jpg' || $this->thumb['type']=='jpeg'){

# Asignando
$this->thumb['type'] = 'jpeg';
$this->thumb['src'] = ImageCreateFromJPEG($file);

}elseif($this->thumb['type']=='png'){

# Creando imagen.
$this->thumb['src'] = ImageCreateFromPNG($file);

}elseif($this->thumb['type']=='gif'){

# Creando imagen.
$this->thumb['src'] = ImageCreateFromGIF($file);

}elseif($this->thumb['type']=='wbmp'){

# Creando imagen.
$this->thumb['src'] = ImageCreateFromWBMP($file);

}else{

# Informe de error
$this->error = 'El formato no es soportada.';

}

# Asignando tamaños.
$this->thumb['size_w'] = imagesx($this->thumb['src']);
$this->thumb['size_h'] = imagesy($this->thumb['src']);

# Asignando calidad.
$this->thumb['quality'] = 100;

}

// ----- Height -----
public function height($size=98){

# Alto
$this->thumb['thumb_h'] = $size;

# Ancho
@$this->thumb['thumb_w'] = ( $this->thumb['thumb_h'] / $this->thumb['size_h'] ) * $this->thumb['size_w'];

# Encadenamiento medoto.
return $this;
}

// ----- Width -----
public function width($size=98){

# Ancho.
$this->thumb['thumb_w'] = $size;

# Alto.
@$this->thumb["thumb_h"] = ($this->thumb["thumb_w"]/$this->thumb["size_w"])*$this->thumb["size_h"];

# Return this
return $this;

}

// ----- Automatico -----
public function auto($size=98){

# Si la imagen es más ancha que larga.
if($this->thumb['size_w'] >= $this->thumb['size_h']){

# Ancho.
$this->thumb['thumb_w'] = $size;

# Alto.
@$this->thumb["thumb_h"] = ($this->thumb["thumb_w"]/$this->thumb["size_w"])*$this->thumb["size_h"];

}else{

# Alto
$this->thumb['thumb_h'] = $size;

# Ancho
@$this->thumb['thumb_w'] = ( $this->thumb['thumb_h'] / $this->thumb['size_h'] ) * $this->thumb['size_w'];

}

# Encadena metodos
return $this;

}

// ----- Calidad -----
public function quality($quality = 100){

# Calidad.
$this->thumb['quality'] = $quality;

# Encadenar metodo
return $this;

}

// ----- Generate -----
public function generate($path = '/'){

# Carpeta.
if(!is_writable($path)){

#$this->error = 'No se puede guardar la imagen en esta locacion.';
$this->error = '<a href="'.$path.'">ruta</a>';

}

# Errores.
if($this->error!==NULL){

echo $this->error;
exit();

}

# Destino.
$this->thumb['destino'] = ImageCreateTrueColor($this->thumb['thumb_w'],$this->thumb['thumb_h']);
@imagecopyresized($this->thumb["destino"],$this->thumb['src'],0,0,0,0,$this->thumb['thumb_w'],$this->thumb['thumb_h'],$this->thumb['size_w'],$this->thumb['size_h']);

# Guardar imagen
if($this->thumb['type']=='jpg' || $this->thumb['type']=='jpeg') {

# Guarda imagen jpeg
imageJPEG($this->thumb['destino'],"$path",$this->thumb["quality"]);

}elseif($this->thumb['type']=='png'){

# Guarda imagen png
imagePNG($this->thumb['destino'],"$path");

}elseif($this->thumb['type']=='gif'){

# Guarda gif
imageGIF($this->thumb['destino'],"$path");

}elseif($this->thumb['type']=='wbmp'){

# Guarda wbmp
imageWBMP($this->thumb['destino'],"$path");

}



}

}

?>









la forma de uso
--------------------------
# Thumbnails
$Thumb = new Thumbnails('archivos/'.$File);
$Thumb->width(250)->generate('archivos/thumb/'.$File);


Me retorna que no se puede guardar la imagen en esa locacion :v osea que no se puede guardar :/