<?php
/**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
namespace Friendica\Util;
use Friendica\Core\Logger;
-use Friendica\Core\System;
use Friendica\DI;
+use Friendica\Model\Photo;
+use Friendica\Network\HTTPClient\Client\HttpClientAccept;
/**
* Image utilities
return $m;
}
+ /**
+ * Return file extension for mime type
+ * @param string $mimetype
+ * @return string
+ */
+ public static function getExtensionByMimeType(string $mimetype): string
+ {
+ switch ($mimetype) {
+ case 'image/png':
+ $imagetype = IMAGETYPE_PNG;
+ break;
+
+ case 'image/gif':
+ $imagetype = IMAGETYPE_GIF;
+ break;
+
+ default:
+ $imagetype = IMAGETYPE_JPEG;
+ break;
+ }
+
+ return image_type_to_extension($imagetype);
+ }
+
/**
* Returns supported image mimetypes and corresponding file extensions
*
return $data;
}
- $data = DI::cache()->get($url);
+ $cacheKey = 'getInfoFromURL:' . sha1($url);
+
+ $data = DI::cache()->get($cacheKey);
if (empty($data) || !is_array($data)) {
$data = self::getInfoFromURL($url);
- DI::cache()->set($url, $data);
+ DI::cache()->set($cacheKey, $data);
}
return $data;
return $data;
}
- $img_str = Network::fetchUrl($url, true, 4);
+ if (Network::isLocalLink($url) && ($data = Photo::getResourceData($url))) {
+ $photo = Photo::selectFirst([], ['resource-id' => $data['guid'], 'scale' => $data['scale']]);
+ if (!empty($photo)) {
+ $img_str = Photo::getImageDataForPhoto($photo);
+ }
+ // @todo Possibly add a check for locally stored files
+ }
+
+ if (empty($img_str)) {
+ $img_str = DI::httpClient()->fetch($url, HttpClientAccept::IMAGE, 4);
+ }
if (!$img_str) {
return [];
$filesize = strlen($img_str);
try {
- if (function_exists("getimagesizefromstring")) {
- $data = @getimagesizefromstring($img_str);
- } else {
- $tempfile = tempnam(get_temppath(), "cache");
-
- $stamp1 = microtime(true);
- file_put_contents($tempfile, $img_str);
- DI::profiler()->saveTimestamp($stamp1, "file", System::callstack());
-
- $data = getimagesize($tempfile);
- unlink($tempfile);
- }
+ $data = @getimagesizefromstring($img_str);
} catch (\Exception $e) {
return [];
}