From ec49afa116a0e14a644c20c73832375c11f74153 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 30 Jun 2021 04:28:03 +0000 Subject: [PATCH] Guess the mimetype in advance --- src/Model/Photo.php | 16 ++++++++++++---- src/Module/Photo.php | 5 +++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/Model/Photo.php b/src/Model/Photo.php index fe416c360f..61fc2df4ea 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -245,13 +245,17 @@ class Photo * Construct a photo array for a system resource image * * @param string $filename Image file name relative to code root - * @param string $mimetype Image mime type. Defaults to "image/jpeg" + * @param string $mimetype Image mime type. Is guessed by file name when empty. * * @return array * @throws \Exception */ - public static function createPhotoForSystemResource($filename, $mimetype = "image/jpeg") + public static function createPhotoForSystemResource($filename, $mimetype = '') { + if (empty($mimetype)) { + $mimetype = Images::guessTypeByExtension($filename); + } + $fields = self::getFields(); $values = array_fill(0, count($fields), ""); @@ -269,13 +273,17 @@ class Photo * * @param string $url Image URL * @param int $uid User ID of the requesting person - * @param string $mimetype Image mime type. Defaults to "image/jpeg" + * @param string $mimetype Image mime type. Is guessed by file name when empty. * * @return array * @throws \Exception */ - public static function createPhotoForExternalResource($url, $uid = 0, $mimetype = "image/jpeg") + public static function createPhotoForExternalResource($url, $uid = 0, $mimetype = '') { + if (empty($mimetype)) { + $mimetype = Images::guessTypeByExtension($url); + } + $fields = self::getFields(); $values = array_fill(0, count($fields), ""); diff --git a/src/Module/Photo.php b/src/Module/Photo.php index e5042fad4e..3b4b7cc569 100644 --- a/src/Module/Photo.php +++ b/src/Module/Photo.php @@ -29,6 +29,7 @@ use Friendica\Model\Contact; use Friendica\Model\Photo as MPhoto; use Friendica\Model\Post; use Friendica\Model\Storage\ExternalResource; +use Friendica\Model\Storage\SystemResource; use Friendica\Util\Proxy; use Friendica\Object\Image; use Friendica\Util\Images; @@ -102,8 +103,8 @@ class Photo extends BaseModule $stamp = microtime(true); $imgdata = MPhoto::getImageDataForPhoto($photo); - // The mimetype for an external resource can only be known after it had been fetched - if ($photo['backend-class'] == ExternalResource::NAME) { + // The mimetype for an external or system resource can only be known reliably after it had been fetched + if (in_array($photo['backend-class'], [ExternalResource::NAME, SystemResource::NAME])) { $mimetype = Images::getMimeTypeByData($imgdata); if (!empty($mimetype)) { $photo['type'] = $mimetype;