Merge pull request #10449 from annando/guess-mimetype

Guess the mimetype in advance
This commit is contained in:
Hypolite Petovan 2021-06-30 21:13:37 -04:00 committed by GitHub
commit c9ab540ab0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 6 deletions

View file

@ -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), "");

View file

@ -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;