1
0
Fork 1
mirror of https://github.com/pixelfed/pixelfed.git synced 2024-12-23 08:14:10 +00:00

Update thumbnail logic

This commit is contained in:
Daniel Supernault 2018-10-09 19:20:09 -06:00
parent 4794182334
commit 84d1e3b731
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7

View file

@ -13,6 +13,10 @@ class Image
public $portrait; public $portrait;
public $thumbnail; public $thumbnail;
public $orientation; public $orientation;
public $acceptedMimes = [
'image/png',
'image/jpeg',
];
public function __construct() public function __construct()
{ {
@ -22,27 +26,27 @@ class Image
$this->landscape = $this->orientations()['landscape']; $this->landscape = $this->orientations()['landscape'];
$this->portrait = $this->orientations()['portrait']; $this->portrait = $this->orientations()['portrait'];
$this->thumbnail = [ $this->thumbnail = [
'width' => 293, 'width' => 640,
'height' => 293, 'height' => 640,
]; ];
$this->orientation = null; $this->orientation = null;
} }
public function orientations() public function orientations()
{ {
return [ return [
'square' => [ 'square' => [
'width' => 1080, 'width' => 1080,
'height' => 1080, 'height' => 1080,
], ],
'landscape' => [ 'landscape' => [
'width' => 1920, 'width' => 1920,
'height' => 1080, 'height' => 1080,
], ],
'portrait' => [ 'portrait' => [
'width' => 1080, 'width' => 1080,
'height' => 1350, 'height' => 1350,
], ],
]; ];
} }
@ -53,9 +57,9 @@ class Image
} }
if ($thumbnail) { if ($thumbnail) {
return [ return [
'dimensions' => $this->thumbnail, 'dimensions' => $this->thumbnail,
'orientation' => 'thumbnail', 'orientation' => 'thumbnail',
]; ];
} }
list($width, $height) = getimagesize($mediaPath); list($width, $height) = getimagesize($mediaPath);
@ -98,18 +102,22 @@ class Image
{ {
$path = $media->media_path; $path = $media->media_path;
$file = storage_path('app/'.$path); $file = storage_path('app/'.$path);
if (!in_array($media->mime, $this->acceptedMimes)) {
return;
}
$ratio = $this->getAspectRatio($file, $thumbnail); $ratio = $this->getAspectRatio($file, $thumbnail);
$aspect = $ratio['dimensions']; $aspect = $ratio['dimensions'];
$orientation = $ratio['orientation']; $orientation = $ratio['orientation'];
if ($media->mime === 'image/gif' && !$thumbnail) {
return;
}
try { try {
$img = Intervention::make($file)->orientate(); $img = Intervention::make($file)->orientate();
$img->resize($aspect['width'], $aspect['height'], function ($constraint) { if($thumbnail) {
$constraint->aspectRatio(); $img->crop($aspect['width'], $aspect['height']);
}); } else {
$img->resize($aspect['width'], $aspect['height'], function ($constraint) {
$constraint->aspectRatio();
});
}
$converted = $this->setBaseName($path, $thumbnail, $img->extension); $converted = $this->setBaseName($path, $thumbnail, $img->extension);
$newPath = storage_path('app/'.$converted['path']); $newPath = storage_path('app/'.$converted['path']);