public function save($file, $quality = 80)
{
$file = $this->alias->resolve($file);
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
$this->_image->setFormat($ext);
if ($ext === 'gif') {
$this->_image->optimizeImageLayers();
} else {
if ($ext === 'jpg' || $ext === 'jpeg') {
$this->_image->setImageCompression(\Imagick::COMPRESSION_JPEG);
$this->_image->setImageCompressionQuality($quality);
}
}
$dir = dirname($file);
if (!@mkdir($dir, 0755, true) && !is_dir($dir)) {
throw new ImagickException('create `:dir` image directory failed: :message', ['dir' => $dir, 'message' => error_get_last()['message']]);
}
if (!$this->_image->writeImage($file)) {
throw new ImagickException('save `:file` image file failed', ['file' => $file]);
}
}