public function save(string $outputFile) : string
{
$sourceFileName = pathinfo($this->sourceFile, PATHINFO_BASENAME);
$cacheDir = sys_get_temp_dir();
$glideServerParameters = ['source' => dirname($this->sourceFile), 'cache' => $cacheDir, 'driver' => config('laravel-glide.driver')];
if (isset($this->modificationParameters['mark'])) {
$watermarkPathInfo = pathinfo($this->modificationParameters['mark']);
$glideServerParameters['watermarks'] = $watermarkPathInfo['dirname'];
$this->modificationParameters['mark'] = $watermarkPathInfo['basename'];
}
$glideServer = ServerFactory::create($glideServerParameters);
$conversionResult = $cacheDir . '/' . $glideServer->makeImage($sourceFileName, $modificationParameters ?? $this->modificationParameters);
rename($conversionResult, $outputFile);
return $outputFile;
}