- added more type-hints
- added missing documentation
This commit is contained in:
Roland Häder 2022-06-21 23:34:14 +02:00
parent fa973d3b0f
commit 84bfc37bf1
No known key found for this signature in database
GPG key ID: C82EDE5DDFA0BA77
5 changed files with 453 additions and 431 deletions

View file

@ -34,23 +34,23 @@ class Images
/**
* 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
{
@ -63,9 +63,14 @@ class Images
$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);
@ -76,11 +81,13 @@ class Images
*
* @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
@ -102,21 +109,20 @@ class Images
*
* @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'];
}
@ -128,12 +134,11 @@ class Images
*
* @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]);
@ -150,14 +155,13 @@ class Images
}
/**
* 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();
@ -173,11 +177,13 @@ class Images
}
/**
* @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 = [];
@ -199,11 +205,12 @@ class Images
}
/**
* @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 = [];
@ -243,12 +250,14 @@ class Images
}
/**
* @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];