Example #1
0
 /**
  *  Para insertar un nuevo registro, debo pasar la ruta de
  *  una imagen válida (puede ser de un archivo local o uno remoto con http://...)
  */
 public static function INSERT($image_path)
 {
     // Compruebo si el archivo es en realidad una imagen:
     //$finfo = finfo_open(FILEINFO_MIME_TYPE);
     //$mime = finfo_file($finfo, $image_path);
     $temp_hash = md5(microtime());
     Rack::Write('temp', $temp_hash, $image_path);
     $temp_path = Rack::Path('temp', $temp_hash);
     $is = getimagesize($temp_path);
     $mime = $is['mime'];
     switch ($mime) {
         case 'image/jpeg':
             $gd = @imagecreatefromjpeg($temp_path);
             break;
         case 'image/png':
             $gd = @imagecreatefrompng($temp_path);
             break;
         case 'image/gif':
             $gd = @imagecreatefromgif($temp_path);
             break;
         case 'image/bmp':
             $gd = @imagecreatefrombmp($temp_path);
             break;
         default:
             return null;
     }
     if (is_resource($gd)) {
         $width = imagesx($gd);
         $height = imagesy($gd);
         $hash = md5_file($temp_path);
         $list = Image::SELECT("Hash='" . Database::escape($hash) . "'");
         if (count($list)) {
             // La imagen ya existe :S
             $image = $list[0];
             $image->_setCounter($image->getCounter() + 1);
         } else {
             // Creo un nuevo registro de imagen :)
             $image = parent::INSERT();
             $image->_setWidth($width);
             $image->_setHeight($height);
             $image->_setMime($mime);
             $image->_setHash($hash);
             $image->_setSize(@filesize($temp_path));
             $image->_setCounter(1);
             // Copiar imagen a la carpeta de imágenes con el id de $image->getId(); (o con el hash)
             Rack::Write('img', md5($image->ID()), $temp_path);
         }
         Rack::Remove('temp', $temp_hash);
         return $image;
     } else {
         // Error al abrir la imagen
         Rack::Remove('temp', $temp_hash);
         return null;
     }
 }
Example #2
0
<?php

$id = Router::$parameters['{id}'];
$image = Image::ROW($id);
if (null == $image) {
    exit;
}
$parts = Router::$parts;
if (0 == count($parts)) {
    $path = Rack::Path('img', md5($image->getId()));
} elseif (1 == count($parts)) {
    $transformation = $parts[0];
    $hash = md5(Router::$url);
    $path = Rack::Path('img.cache', $hash);
    if (!file_exists($path)) {
        Rack::Make('img.cache', $hash);
        $prim = Prim::transform($image);
        $prim->setRules($transformation);
        $prim->saveTo($path);
    }
} else {
    exit;
}
header("Expires: " . date("r", time() + 9999999));
header("Content-type: " . $image->getMime());
header("Content-Length: " . filesize($path));
readfile($path);
Example #3
0
File: file.php Project: fulldump/8
<?php

$url =& ControllerPhp::$url;
if (count($url) == 1) {
    $file = File::ROW($url[0]);
    array_shift($url);
    if ($file != null) {
        $path = Rack::Path('file', md5($file->ID()));
        if (file_exists($path)) {
            header("Content-type: " . $file->getMime());
            header('Content-Disposition: attachment; filename="' . $file->getName() . '"');
            header("Content-Length: " . filesize($path));
            readfile($path);
        }
    }
}
Example #4
0
 private function __construct(&$image)
 {
     $this->_image =& $image;
     $this->_path = Rack::Path('img', md5($image->ID()));
 }