]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Keep aspect ratio when generating local thumbnails
authorBrion Vibber <brion@status.net>
Tue, 9 Nov 2010 01:51:53 +0000 (17:51 -0800)
committerBrion Vibber <brion@status.net>
Tue, 9 Nov 2010 01:51:53 +0000 (17:51 -0800)
lib/mediafile.php

index febf4603a7046d3448aab2edad2d0882990a28b9..a41d7c76b52d190e066e3b093570b67ad08d1f26 100644 (file)
@@ -127,8 +127,9 @@ class MediaFile
         $outname = File::filename($this->user->getProfile(), 'thumb-' . $this->filename, $this->mimetype);
         $outpath = File::path($outname);
 
-        $width = common_config('attachments', 'thumb_width');
-        $height = common_config('attachments', 'thumb_height');
+        $maxWidth = common_config('attachments', 'thumb_width');
+        $maxHeight = common_config('attachments', 'thumb_height');
+        list($width, $height) = $this->scaleToFit($image->width, $image->height, $maxWidth, $maxHeight);
 
         $image->resizeTo($outpath, $width, $height);
         File_thumbnail::saveThumbnail($this->fileRecord->id,
@@ -137,6 +138,19 @@ class MediaFile
                                       $height);
     }
 
+    function scaleToFit($width, $height, $maxWidth, $maxHeight)
+    {
+        $aspect = $maxWidth / $maxHeight;
+        $w1 = $maxWidth;
+        $h1 = intval($height * $maxWidth / $width);
+        if ($h1 > $maxHeight) {
+            $w2 = intval($width * $maxHeight / $height);
+            $h2 = $maxHeight;
+            return array($w2, $h2);
+        }
+        return array($w1, $h1);
+    }
+
     function rememberFile($file, $short)
     {
         $this->maybeAddRedir($file->id, $short);