prefix = $prefix; } public function getMetadata(string $file_path): ImageMetadata { $arg = \escapeshellarg("$file_path[0]"); $ret_exec = shell_exec_error("{$this->prefix} identify -format \"%w %h %m\" $arg"); if (!\is_string($ret_exec)) { throw new \RuntimeException('Error while executing identify'); } $ret_match = \preg_match('/^(\d+) (\d+) ([\w\d]+) ([\w]+)$/', $ret_exec, $m); if (!$ret_match) { throw new \RuntimeException('Could not parse identify output'); } $width = $m[1]; $height = $m[2]; $ext = $m[3]; $orientation_str = $m[4]; $mime = Metadata\ext_to_mime($ext) ?? 'application/octet-stream'; $exif_orientation = self::parseOrientation($orientation_str); return new ImageMetadata($width, $height, $mime, $exif_orientation); } }