%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/gallery/models/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/gallery/models/SquarePreviewImage.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2016 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\gallery\models;
use \humhub\modules\file\converter\PreviewImage;
use Imagine\Image\Box;
use Imagine\Image\ManipulatorInterface;
use \Yii;
use yii\imagine\Image;
/**
* SquareImageConverter
*
* @since 1.2
* @author Sebastian Stumpf
*/
class SquarePreviewImage extends PreviewImage
{
const DEFAULT_GALLERY_PREVIEW_IMAGE_MAX_DIM = 400;
/**
* @inheritdoc
*/
public function getId()
{
return 'gallery-preview';
}
/**
* @inheritDoc
*/
public function init()
{
// Add value for unique file variant
$this->options['squared-version'] = 1;
$this->options['maxWidth'] = Yii::$app->getModule('gallery')->settings->get('galleryPreviewImageMaxDim') ?
Yii::$app->getModule('gallery')->settings->get('galleryPreviewImageMaxDim') : SquarePreviewImage::DEFAULT_GALLERY_PREVIEW_IMAGE_MAX_DIM;
parent::init();
}
/**
* @inheritdoc
*/
protected function convert($fileName)
{
if (!is_file($this->file->store->get($fileName))) {
$image = Image::getImagine()->open($this->file->store->get());
// Also handle orientation of resized images
// https://github.com/yiisoft/yii2-imagine/issues/44
if ($this->file->mime_type === 'image/jpeg' && function_exists('exif_read_data')) {
$exif = @exif_read_data($this->file->store->get());
if (!empty($exif['Orientation'])) {
switch ($exif['Orientation']) {
case 3:
$image->rotate(180);
break;
case 6:
$image->rotate(90);
break;
case 8:
$image->rotate(-90);
break;
}
}
}
$newWidth = min([$image->getSize()->getHeight(), $image->getSize()->getWidth(), $this->options['maxWidth']]);
// Create squared version
$image->thumbnail(new Box($newWidth, $newWidth), ManipulatorInterface::THUMBNAIL_OUTBOUND)
->save($this->file->store->get($fileName), ['format' => 'png']);
}
if (version_compare(Yii::$app->version, '1.5', '<')) {
$this->imageInfo = @getimagesize($this->file->store->get($fileName));
}
}
/**
* Crop an image file to a square thumbnail.
* The thumbnail will be saved with the suffix "<width>_thumb_square"
* @param File $basefile the file to crop.
* @param number $maxDimension limit maximum with/height.
* @return string the thumbnail's url or null if an error occured.
*/
public static function getSquarePreviewImageUrlFromFile($basefile = null)
{
$previewImage = new SquarePreviewImage();
if ($previewImage->applyFile($basefile)) {
return $previewImage->getUrl();
} else {
return "";
}
}
}