15/03/2013, 22:27
|
| | Fecha de Ingreso: septiembre-2012 Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 12 años, 2 meses 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 :/ |