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>'; } }
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; }