]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/Images.php
Use HTTPRequestOptions constants for HTTPClient::get()
[friendica.git] / src / Util / Images.php
index 1b52b91a133e62b359cc3cecd0e8ddcde2034565..bf84ee6c22552bad74d3db1eb83272a5bc52f0d3 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2021, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -22,8 +22,8 @@
 namespace Friendica\Util;
 
 use Friendica\Core\Logger;
-use Friendica\Core\System;
 use Friendica\DI;
+use Friendica\Model\Photo;
 
 /**
  * Image utilities
@@ -77,21 +77,21 @@ class Images
         *
         * @param string $image_data Image data
         * @param string $filename   File name (for guessing the type via the extension)
-        * @param string $mimeType   possible mime type
+        * @param string $mime       default mime type
         *
         * @return string
         * @throws \Exception
         */
-       public static function getMimeTypeByData(string $image_data, string $filename = '', string $mimeType = '')
+       public static function getMimeTypeByData(string $image_data, string $filename = '', string $mime = '')
        {
-               if (substr($mimeType, 0, 6) == 'image/') {
-                       Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mimeType]);
-                       return $mimeType;
+               if (substr($mime, 0, 6) == 'image/') {
+                       Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mime]);
+                       return $mime;
                }
 
                $image = @getimagesizefromstring($image_data);
                if (!empty($image['mime'])) {
-                       Logger::info('Mime type detected via data', ['filename' => $filename, 'default' => $mimeType, 'mime' => $image['mime']]);
+                       Logger::info('Mime type detected via data', ['filename' => $filename, 'default' => $mime, 'mime' => $image['mime']]);
                        return $image['mime'];
                }
 
@@ -184,7 +184,17 @@ class Images
                        return $data;
                }
 
-               $img_str = DI::httpRequest()->fetch($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::httpRequest()->fetch($url, 4);
+               }
 
                if (!$img_str) {
                        return [];
@@ -193,18 +203,7 @@ class Images
                $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");
-
-                               $data = getimagesize($tempfile);
-                               unlink($tempfile);
-                       }
+                       $data = @getimagesizefromstring($img_str);
                } catch (\Exception $e) {
                        return [];
                }