Example #1
0
 public function action_zip($articulo_id)
 {
     include DOCROOT . 'phpthumb/phpthumb.class.php';
     \Config::load('phpthumb');
     $document_root = str_replace("\\", "/", Config::get('document_root'));
     is_null($articulo_id) and Response::redirect('articulo');
     $articulo = Model_Articulo::find('first', array('related' => array('fotos', 'seccion'), 'where' => array(array('id', '=', $articulo_id))));
     $fotos_web = null;
     foreach ($articulo->fotos as $foto) {
         $phpThumb = new phpThumb();
         $phpThumb->setParameter('w', Config::get('web_size'));
         $phpThumb->setParameter('q', 75);
         $phpThumb->setParameter('aoe', true);
         $phpThumb->setParameter('config_output_format', 'jpeg');
         $phpThumb->setParameter('f', 'jpeg');
         $nombre_archivo = str_ireplace(".jpg", Config::get('photos_texto') . '.jpg', $foto->imagen);
         $pieces = explode("/", $nombre_archivo);
         $count_foto = count($pieces);
         $nombre_archivo = $pieces[$count_foto - 1];
         $output_filename = $document_root . "/web/" . $nombre_archivo;
         $phpThumb->setSourceData(file_get_contents($document_root . $foto->imagen));
         if ($phpThumb->GenerateThumbnail()) {
             if ($phpThumb->RenderToFile($output_filename)) {
                 Log::info('Imagen para web generada con exito' . $output_filename);
                 $fotos_web[] = $output_filename;
             } else {
                 Log::info('Error al generar imagen para web ' . $phpThumb->debugmessages);
             }
             $phpThumb->purgeTempFiles();
         } else {
             Log::info('Error Fatal al generar imagen para web ' . $phpThumb->fatalerror . "|" . $phpThumb->debugmessages);
         }
         unset($phpThumb);
     }
     $time = time();
     Zip::create_zip($fotos_web, $articulo_id, true, $time);
 }
    $phpThumb->setParameter('config_output_format', 'jpeg');
    $phpThumb->setParameter('config_imagemagick_path', '/usr/local/bin/convert');
    //$phpThumb->setParameter('config_allow_src_above_docroot', true); // needed if you're working outside DOCUMENT_ROOT, in a temp dir for example
    // generate & output thumbnail
    $output_filename = './thumbnails/' . basename($_FILES['userfile']['name']) . '_' . $thumbnail_width . '.' . $phpThumb->config_output_format;
    if ($phpThumb->GenerateThumbnail()) {
        // this line is VERY important, do not remove it!
        $output_size_x = ImageSX($phpThumb->gdimg_output);
        $output_size_y = ImageSY($phpThumb->gdimg_output);
        if ($output_filename || $capture_raw_data) {
            if ($capture_raw_data && $phpThumb->RenderOutput()) {
                // RenderOutput renders the thumbnail data to $phpThumb->outputImageData, not to a file or the browser
                mysql_query("INSERT INTO `table` (`thumbnail`) VALUES ('" . mysql_escape_string($phpThumb->outputImageData) . "') WHERE (`id` = '" . $id . "')");
            } elseif ($phpThumb->RenderToFile($output_filename)) {
                // do something on success
                echo 'Successfully rendered:<br><img src="' . $output_filename . '">';
            } else {
                // do something with debug/error messages
                echo 'Failed (size=' . $thumbnail_width . '):<pre>' . implode("\n\n", $phpThumb->debugmessages) . '</pre>';
            }
            $phpThumb->purgeTempFiles();
        } else {
            $phpThumb->OutputThumbnail();
        }
    } else {
        // do something with debug/error messages
        echo 'Failed (size=' . $thumbnail_width . ').<br>';
        echo '<div style="background-color:#FFEEDD; font-weight: bold; padding: 10px;">' . $phpThumb->fatalerror . '</div>';
        echo '<form><textarea rows="10" cols="60" wrap="off">' . htmlentities(implode("\n* ", $phpThumb->debugmessages)) . '</textarea></form><hr>';
    }
}
Example #3
0
 static function uploadImages($field, $item, $delImage = 0, $itemType = 'albums', $width = 0, $height = 0)
 {
     $jFileInput = new JInput($_FILES);
     $file = $jFileInput->get('jform', array(), 'array');
     // If there is no uploaded file, we have a problem...
     if (!is_array($file)) {
         //			JError::raiseWarning('', 'No file was selected.');
         return '';
     }
     // Build the paths for our file to move to the components 'upload' directory
     $fileName = $file['name'][$field];
     $tmp_src = $file['tmp_name'][$field];
     $image = '';
     $oldImage = '';
     $flagDelete = false;
     //		$item = $this->getItem();
     // if delete old image checked or upload new file
     if ($delImage || $fileName) {
         $oldImage = JPATH_ROOT . DS . str_replace('/', DS, $item->images);
         // unlink file
         if (is_file($oldImage)) {
             @unlink($oldImage);
         }
         $flagDelete = true;
         $image = '';
     }
     $date = date('Y') . DS . date('m') . DS . date('d');
     $dest = JPATH_ROOT . DS . 'images' . DS . $itemType . DS . $date . DS . $item->id . DS;
     // Make directory
     @mkdir($dest, 0777, true);
     if (isset($fileName) && $fileName) {
         $filepath = JPath::clean($dest . $fileName);
         /*
         if (JFile::exists($filepath)) {
         	JError::raiseWarning(100, JText::_('COM_MEDIA_ERROR_FILE_EXISTS'));	// File exists
         }
         */
         // Move uploaded file
         jimport('joomla.filesystem.file');
         if (!JFile::upload($tmp_src, $filepath)) {
             JError::raiseWarning(100, JText::_('COM_MEDIA_ERROR_UNABLE_TO_UPLOAD_FILE'));
             // Error in upload
             return '';
         }
         // if upload success, resize image
         if ($width) {
             require_once JPATH_ROOT . DS . 'jelibs/phpthumb/phpthumb.class.php';
             // create phpThumb object
             $phpThumb = new phpThumb();
             if (include_once JPATH_ROOT . DS . 'jelibs/phpthumb/phpThumb.config.php') {
                 foreach ($PHPTHUMB_CONFIG as $key => $value) {
                     $keyname = 'config_' . $key;
                     $phpThumb->setParameter($keyname, $value);
                 }
             }
             // this is very important when using a single object to process multiple images
             $phpThumb->resetObject();
             $phpThumb->setSourceFilename($filepath);
             // set parameters (see "URL Parameters" in phpthumb.readme.txt)
             $phpThumb->setParameter('w', $width);
             if ($height) {
                 $phpThumb->setParameter('h', $height);
             }
             $phpThumb->setParameter('config_output_format', 'jpeg');
             // set value to return
             $image = 'images/' . $itemType . '/' . str_replace(DS, '/', $date) . '/' . $item->id . '/' . $fileName;
             if ($phpThumb->GenerateThumbnail()) {
                 if ($image) {
                     if (!$phpThumb->RenderToFile($filepath)) {
                         // do something on failed
                         die('Failed (size=' . $width . '):<pre>' . implode("\n\n", $phpThumb->debugmessages) . '</pre>');
                     }
                     $phpThumb->purgeTempFiles();
                 }
             } else {
                 // do something with debug/error messages
                 echo 'Failed (size=' . $width . ').<br>';
                 echo '<div style="background-color:#FFEEDD; font-weight: bold; padding: 10px;">' . $phpThumb->fatalerror . '</div>';
                 echo '<form><textarea rows="100" cols="300" wrap="off">' . htmlentities(implode("\n* ", $phpThumb->debugmessages)) . '</textarea></form><hr>';
                 die;
             }
         } else {
             // set value to return
             $image = 'images/' . $itemType . '/' . str_replace(DS, '/', $date) . '/' . $item->id . '/' . $fileName;
         }
     } else {
         if (!$flagDelete) {
             $image = $item->images;
         }
     }
     return $image;
 }
 protected function makeUploadFile($fileKey, $options)
 {
     // if no file, return false
     if (!isset($this->FILES[$fileKey]['name']) || empty($this->FILES[$fileKey]['name'])) {
         return false;
     }
     if ($this->FILES[$fileKey]['error'] != 0) {
         $haveError = 1;
         $this->error[] = sprintf(lang::translate('cannot_upload_file_for_'), $this->title(isset($options['label']) ? $options['label'] : $field));
     }
     if ($this->FILES[$fileKey]['size'] > $this->maximulFileSize * 1024) {
         $haveError = 1;
         $this->error[] = sprintf(lang::translate('the_file_is_larger_than_'), $this->title(isset($options['label']) ? $options['label'] : $field), number_format($this->maximulFileSize / 1024, 1, '.', ''));
     }
     // $this->error can be set upper, from filters or other
     if (isset($haveError)) {
         return false;
     }
     $newNameOfFile = uniqid();
     if (substr($options['file']['location'], -1) != '/') {
         $options['file']['location'] = $options['file']['location'] . '/';
     }
     $ext = $this->extension($this->FILES[$fileKey]['name']);
     $_final_newNameOfFile = $this->folder . $options['file']['location'] . $newNameOfFile . '.' . $ext;
     if (!is_dir($this->folder . $options['file']['location'])) {
         mkdir($this->folder . $options['file']['location'], 0777) or die('Error at line "' . __LINE__ . '" in method "' . __METHOD__ . '"' . (isset($this->section) ? ', section ' . $this->section : '') . '<br />Cannot create folder.');
     }
     if (false == @copy($this->FILES[$fileKey]['tmp_name'], $_final_newNameOfFile)) {
         $haveError = 1;
         $this->error[] = sprintf(lang::translate('cannot_upload_file_for_'), $this->title(isset($options['label']) ? $options['label'] : $field));
     }
     // stop if cannot upload
     if (isset($haveError)) {
         return false;
     }
     // if we have to resize
     if (empty($this->error) && isset($options['file']['resize'])) {
         $phpThumb = new phpThumb();
         // create sizes of thumbnail
         $capture_raw_data = false;
         // set to true to insert to database rather than render to screen or file (see below)
         foreach ($options['file']['resize'] as $thumbnailSize => $typeOfResize) {
             list($_w, $_h) = explode('x', $thumbnailSize);
             // this is very important when using a single object to process multiple images
             $phpThumb->resetObject();
             // set data source -- do this first, any settings must be made AFTER this call
             $phpThumb->setSourceFilename($_final_newNameOfFile);
             // $phpThumb->setSourceFilename($_FILES['userfile']['tmp_name']);
             // or $phpThumb->setSourceData($binary_image_data);
             // or $phpThumb->setSourceImageResource($gd_image_resource);
             // PLEASE NOTE:
             // You must set any relevant config settings here. The phpThumb
             // object mode does NOT pull any settings from phpThumb.config.php
             # $phpThumb->setParameter('config_document_root', $this->folder);
             //$phpThumb->setParameter('config_cache_directory', '/tmp/persistent/phpthumb/cache/');
             // make image rotate
             if (isset($options['file']['rotate'])) {
                 $phpThumb->ra = (int) $options['file']['rotate'];
             }
             if (isset($options['file']['background']) && strlen($options['file']['background']) == 6) {
                 $phpThumb->setParameter('bg', $options['file']['background']);
             } else {
                 $phpThumb->setParameter('bg', 'FFFFFF');
             }
             if (isset($options['file']['fixed-aspect']) && $typeOfResize == 'resize') {
                 $phpThumb->setParameter('far', 'FFFFFF');
             }
             $phpThumb->setParameter('w', $_w);
             $phpThumb->setParameter('h', $_h);
             // make crop, not resize
             if ($typeOfResize == 'crop') {
                 $phpThumb->setParameter('zc', 'C');
             }
             //$phpThumb->setParameter('fltr', 'gam|1.2');
             if (isset($options['file']['watermark'])) {
                 if (is_array($options['file']['watermark']) && isset($options['file']['watermark'][$thumbnailSize])) {
                     $phpThumb->setParameter('fltr', 'wmi|' . $options['file']['watermark'][$thumbnailSize] . '|C|75|20|20');
                 } else {
                     if (is_file($options['file']['watermark'])) {
                         $phpThumb->setParameter('fltr', 'wmi|' . $options['file']['watermark'] . '|C|75|20|20');
                     }
                 }
             }
             // set options (see phpThumb.config.php)
             // here you must preface each option with "config_"
             $phpThumb->setParameter('config_output_format', $ext);
             // $phpThumb->setParameter('config_imagemagick_path', '/usr/local/bin/convert');
             // $phpThumb->setParameter('config_imagemagick_path', IMAGICKPATH);
             // $phpThumb->setParameter('config_allow_src_above_docroot', true); // needed if you're working outside DOCUMENT_ROOT, in a temp dir for example
             // generate & output thumbnail
             $folderToMove = $this->folder . $options['file']['location'] . $thumbnailSize . '/';
             if (!is_dir($folderToMove)) {
                 mkdir($folderToMove, 0777) or die('Error at line "' . __LINE__ . '" in method "' . __METHOD__ . '"' . (isset($this->section) ? ', section ' . $this->section : '') . '<br />Cannot create folder at.');
             }
             $output_filename = $folderToMove . $newNameOfFile . '.' . $phpThumb->config_output_format;
             if ($phpThumb->GenerateThumbnail()) {
                 $output_size_x = ImageSX($phpThumb->gdimg_output);
                 $output_size_y = ImageSY($phpThumb->gdimg_output);
                 $phpThumb->RenderToFile($output_filename);
                 $phpThumb->purgeTempFiles();
             } else {
                 $this->error[] = sprintf(lang::translate('fail_cannot_resize_file'), $phpThumb->fatalerror, htmlentities(implode("\n* ", $phpThumb->debugmessages)));
                 @unlink($output_filename);
                 @unlink($_final_newNameOfFile);
                 return false;
             }
         }
         // delete original file after resize
         if (isset($options['file']['keep-original']) && $options['file']['keep-original'] == false) {
             @unlink($this->folder . $options['file']['location'] . $newNameOfFile . '.' . $ext);
         }
     }
     return $newNameOfFile . '.' . $ext;
 }