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