prefix = $prefix; } public function getMetadata(string $file_path): ImageMetadataResult { $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 = Mime\ext_to_mime($ext) ?? 'application/octet-stream'; $exif_orientation = self::parseOrientation($orientation_str); return new ImageMetadataResult($width, $height, $mime, $exif_orientation); } }