/** * Set logo value * * @param string $source Source file * @param integer $max_width * @param integer $max_height * @param boolean $save Save object when done * @return null */ function setLogo($source, $max_width = 50, $max_height = 50, $save = true) { if (!is_readable($source)) { return false; } do { $temp_file = ROOT . '/cache/' . sha1(uniqid(rand(), true)); } while (is_file($temp_file)); try { Env::useLibrary('simplegd'); $image = new SimpleGdImage($source); $thumb = $image->scale($max_width, $max_height, SimpleGdImage::BOUNDARY_DECREASE_ONLY, false); $thumb->saveAs($temp_file, IMAGETYPE_PNG); $public_filename = PublicFiles::addFile($temp_file, 'png'); if ($public_filename) { $this->setLogoFile($public_filename); if ($save) { $this->save(); } // if } // if $result = true; } catch (Exception $e) { $result = false; } // try // Cleanup if (!$result && $public_filename) { PublicFiles::deleteFile($public_filename); } // if @unlink($temp_file); return $result; }
/** * Create image thumbnail. This function will return true on success, false otherwise * * @param void * @return boolean */ protected function createThumb() { do { $source_file = CACHE_DIR . '/' . sha1(uniqid(rand(), true)); } while (is_file($source_file)); if (!file_put_contents($source_file, $this->getFileContent()) || !is_readable($source_file)) { return false; } // if do { $temp_file = CACHE_DIR . '/' . sha1(uniqid(rand(), true)); } while (is_file($temp_file)); try { Env::useLibrary('simplegd'); $image = new SimpleGdImage($source_file); $thumb = $image->scale(100, 100, SimpleGdImage::BOUNDARY_DECREASE_ONLY, false); $thumb->saveAs($temp_file, IMAGETYPE_PNG); $public_filename = PublicFiles::addFile($temp_file, 'png'); if ($public_filename) { $this->setThumbFilename($public_filename); $this->save(); } // if $result = true; } catch (Exception $e) { $result = false; } // try @unlink($source_file); @unlink($temp_file); return $result; }
/** * Set contact picture from $source file * * @param string $source Source file * @param integer $max_width Max picture widht * @param integer $max_height Max picture height * @param boolean $save Save user object when done * @return string */ function setPicture($source, $fileType, $max_width = 50, $max_height = 50, $save = true) { if (!is_readable($source)) { return false; } do { $temp_file = ROOT . '/cache/' . sha1(uniqid(rand(), true)); } while (is_file($temp_file)); Env::useLibrary('simplegd'); $image = new SimpleGdImage($source); if ($image->getImageType() == IMAGETYPE_PNG) { if ($image->getHeight() > 128 || $image->getWidth() > 128) { // resize images if are png bigger than 128 px $thumb = $image->scale($max_width, $max_height, SimpleGdImage::BOUNDARY_DECREASE_ONLY, false); $thumb->saveAs($temp_file, IMAGETYPE_PNG); $public_fileId = FileRepository::addFile($temp_file, array('type' => 'image/png', 'public' => true)); } else { //keep the png as it is. $public_fileId = FileRepository::addFile($source, array('type' => 'image/png', 'public' => true)); } } else { $thumb = $image->scale($max_width, $max_height, SimpleGdImage::BOUNDARY_DECREASE_ONLY, false); $thumb->saveAs($temp_file, IMAGETYPE_PNG); $public_fileId = FileRepository::addFile($temp_file, array('type' => 'image/png', 'public' => true)); } if ($public_fileId) { $this->setPictureFile($public_fileId); if ($save) { $this->save(); } // if } // if $result = true; // Cleanup if (!$result && $public_fileId) { FileRepository::deleteFile($public_fileId); } // if @unlink($temp_file); return $result; }