Documentos de Académico
Documentos de Profesional
Documentos de Cultura
abstractas
Las clases abstractas en la programacin orientada a objetos son clases
de las que no se pueden crear instancias/objetos directamente de ella.
Mtodos Abstractos
As como hay clases abstractas, tambin hay mtodos abstractos. Estos
mtodos no son implementados en su definicin, pero obliga a las clases
que hereden el mtodo a implementarlo.
Un mtodo abstracto se puede definir en casi cualquier clase, no
function setWidth($w)
gd solo maneja enteros, ergo obligamos que ancho sea entero.
= (int) $w;
ancho debe ser mayor que 0
($w > 0)
$this->width = $w;
function setHeight($h)
gd solo maneja enteros, ergo obligamos que alto sea entero
= (int) $h;
alto debe ser mayor que 0
($h > 0)
$this->height = $h;
return $this->height;
}
/**
* Genera una imagen gd del archivo con nombre $filename
* Retorna FALSE si ocurrior algun error, por ejemplo: el tipo no es
soportado
*
* @param string $filename nombre del archivo
* @param int $type Tipo de imagen para saber que funcion usar
* @return resource Una imagen gd.
*/
protected function gdFromFile($filename, $type)
{
$gd = false;
switch ($type)
{
case IMAGETYPE_PNG:
$gd = imagecreatefrompng($filename);
break;
case IMAGETYPE_JPEG:
$gd = imagecreatefromjpeg($filename);
break;
case IMAGETYPE_GIF:
$gd = imagecreatefromgif($filename);
break;
}
return $gd;
}
/**
* Guarda una imagen gd en el archivo de nombre $filename
*
* @param resource $gd La imagen a guardar
* @param string $filename nombre del archivo
* @param int $type Tipo de imagen para saber que funcion usar
* @return bool TRUE en caso de exito, FALSE en caso contrario
*
*/
protected function gdToFile($gd, $filename, $type)
{
$success = false;
// si $filename es nulo las funciones posteriores imprimiran en
la salida directamente
// aqui tratamos de evitar eso
$filename = (string) $filename;
if (trim($filename) != "")
{
// no tiene sentido verificar si el archivo existe, pues si
no existe se creara
// las siguientes funciones retornan false si ocurrio algun
error, true en caso de exito
switch ($type)
{
case IMAGETYPE_PNG:
$success = imagepng($gd, $filename);
break;
case IMAGETYPE_GIF:
$success = imagegif($gd, $filename);
break;
case IMAGETYPE_JPEG:
$success = imagejpeg($gd, $filename);
break;
}
}
return $success;
}
// Obligamos a que las clases que hereden esta clase implementen este
mtodo
/**
* La intencion de este metodo es que guarde la imagen creada en un
archivo
*
* @param string $filename Nombre del archivo
* @return bool TRUE en caso de exito, FALSE en caso contrario
*/
abstract public function save($filename);
}
$src;
$origWidth;
$origHeight;
$origType;
$hasError = false;
{
// guardamos gd en el archivo $filename
if (!$this->gdToFile($base, $filename, $this->origType))
{
$this->throwError("Archivo no generado", E_USER_WARNING);
}
else
{
// todo salio bien
$success = true;
// liberamos los recursos gd
imagedestroy($base);
imagedestroy($orig);
}
}
}
else
{
$this->throwError("Gd no fue generado.", E_USER_WARNING);
}
return $success;
}
private function throwError($msg, $level)
{
trigger_error($msg, $level);
}
}
?>
Uso de ImageResize
Cdigo :
<?php
$src = "archivo.jpg";
$dest = "archivo150x150.jpg";
$resize = new ImageResize($src);
$resize->resize(150,150);
if (!@$resize->save($dest))
{
echo "Archivo no fue generado. Error: " . error_get_last();
}
else
{
echo "Archivo $dest generado.";
}
?>