use Friendica\Core\Logger;
use Friendica\DI;
use Friendica\Model\Photo;
+use Friendica\Network\HTTPClient\Client\HttpClientAccept;
/**
* Image utilities
/**
* Maps Mime types to Imagick formats
*
- * @return array
+ * @return array Format map
*/
public static function getFormatsMap()
{
- $m = [
+ return [
'image/jpeg' => 'JPG',
+ 'image/jpg' => 'JPG',
'image/png' => 'PNG',
- 'image/gif' => 'GIF'
+ 'image/gif' => 'GIF',
];
-
- return $m;
}
/**
- * Return file extension for mime type
- * @param string $mimetype
- * @return string
+ * Return file extension for MIME type
+ *
+ * @param string $mimetype MIME type
+ * @return string File extension for MIME type
*/
public static function getExtensionByMimeType(string $mimetype): string
{
$imagetype = IMAGETYPE_GIF;
break;
- default:
+ case 'image/jpeg':
+ case 'image/jpg':
$imagetype = IMAGETYPE_JPEG;
break;
+
+ default: // Unknown type must be a blob then
+ return 'blob';
+ break;
}
return image_type_to_extension($imagetype);
*
* @return array
*/
- public static function supportedTypes()
+ public static function supportedTypes(): array
{
$types = [
- 'image/jpeg' => 'jpg'
+ 'image/jpeg' => 'jpg',
+ 'image/jpg' => 'jpg',
];
+
if (class_exists('Imagick')) {
// Imagick::queryFormats won't help us a lot there...
// At least, not yet, other parts of friendica uses this array
*
* @param string $image_data Image data
* @param string $filename File name (for guessing the type via the extension)
- * @param string $mime default mime type
- *
- * @return string
+ * @param string $default Default MIME type
+ * @return string MIME type
* @throws \Exception
*/
- public static function getMimeTypeByData(string $image_data, string $filename = '', string $mime = '')
+ public static function getMimeTypeByData(string $image_data, string $filename = '', string $default = ''): string
{
- if (substr($mime, 0, 6) == 'image/') {
- Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mime]);
- return $mime;
+ if (substr($default, 0, 6) == 'image/') {
+ Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $default]);
+ return $default;
}
$image = @getimagesizefromstring($image_data);
if (!empty($image['mime'])) {
- Logger::info('Mime type detected via data', ['filename' => $filename, 'default' => $mime, 'mime' => $image['mime']]);
+ Logger::info('Mime type detected via data', ['filename' => $filename, 'default' => $default, 'mime' => $image['mime']]);
return $image['mime'];
}
*
* @param string $sourcefile Source file of the image
* @param string $filename File name (for guessing the type via the extension)
- * @param string $mime default mime type
- *
- * @return string
+ * @param string $default default MIME type
+ * @return string MIME type
* @throws \Exception
*/
- public static function getMimeTypeBySource(string $sourcefile, string $filename = '', string $mime = '')
+ public static function getMimeTypeBySource(string $sourcefile, string $filename = '', string $default = ''): string
{
- if (substr($mime, 0, 6) == 'image/') {
- Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mime]);
- return $mime;
+ if (substr($default, 0, 6) == 'image/') {
+ Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $default]);
+ return $default;
}
$image = @getimagesize($sourcefile);
if (!empty($image['mime'])) {
- Logger::info('Mime type detected via file', ['filename' => $filename, 'default' => $mime, 'image' => $image]);
+ Logger::info('Mime type detected via file', ['filename' => $filename, 'default' => $default, 'image' => $image]);
return $image['mime'];
}
}
/**
- * Guess image mimetype from the filename
+ * Guess image MIME type from the filename's extension
*
- * @param string $filename Image filename
- *
- * @return string
+ * @param string $filename Image filename
+ * @return string Guessed MIME type by extension
* @throws \Exception
*/
- public static function guessTypeByExtension(string $filename)
+ public static function guessTypeByExtension(string $filename): string
{
$ext = pathinfo(parse_url($filename, PHP_URL_PATH), PATHINFO_EXTENSION);
$types = self::supportedTypes();
}
/**
- * @param string $url
- * @return array
+ * Gets info array from given URL, cached data has priority
+ *
+ * @param string $url URL
+ * @return array Info
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public static function getInfoFromURLCached($url)
+ public static function getInfoFromURLCached(string $url): array
{
$data = [];
DI::cache()->set($cacheKey, $data);
}
- return $data;
+ return $data ?? [];
}
/**
- * @param string $url
- * @return array
+ * Gets info from URL uncached
+ *
+ * @param string $url URL
+ * @return array Info array
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public static function getInfoFromURL($url)
+ public static function getInfoFromURL(string $url): array
{
$data = [];
}
if (empty($img_str)) {
- $img_str = DI::httpClient()->fetch($url, 4);
+ $img_str = DI::httpClient()->fetch($url, HttpClientAccept::IMAGE, 4);
}
if (!$img_str) {
$data['size'] = $filesize;
}
- return $data;
+ return is_array($data) ? $data : [];
}
/**
- * @param integer $width
- * @param integer $height
- * @param integer $max
- * @return array
+ * Returns scaling information
+ *
+ * @param integer $width Width
+ * @param integer $height Height
+ * @param integer $max Max width/height
+ * @return array Scaling dimensions
*/
- public static function getScalingDimensions($width, $height, $max)
+ public static function getScalingDimensions(int $width, int $height, int $max): array
{
if ((!$width) || (!$height)) {
return ['width' => 0, 'height' => 0];