Grafika\Gd\Editor::save PHP Method

save() public method

Save the image to an image format.
public save ( Image $image, string $file, null | string $type = null, null | string $quality = null, boolean | false $interlace = false, integer $permission = 493 ) : Editor
$image Image
$file string File path where to save the image.
$type null | string Type of image. Can be null, "GIF", "PNG", or "JPEG".
$quality null | string Quality of image. Applies to JPEG only. Accepts number 0 - 100 where 0 is lowest and 100 is the highest quality. Or null for default.
$interlace boolean | false Set to true for progressive JPEG. Applies to JPEG only.
$permission integer Default permission when creating non-existing target directory.
return Editor
    public function save($image, $file, $type = null, $quality = null, $interlace = false, $permission = 0755)
    {
        if (null === $type) {
            $type = $this->_getImageTypeFromFileName($file);
            // Null given, guess type from file extension
            if (ImageType::UNKNOWN === $type) {
                $type = $image->getType();
                // 0 result, use original image type
            }
        }
        $targetDir = dirname($file);
        // $file's directory
        if (false === is_dir($targetDir)) {
            // Check if $file's directory exist
            // Create and set default perms to 0755
            if (!mkdir($targetDir, $permission, true)) {
                throw new \Exception(sprintf('Cannot create %s', $targetDir));
            }
        }
        switch (strtoupper($type)) {
            case ImageType::GIF:
                if ($image->isAnimated()) {
                    $blocks = $image->getBlocks();
                    $gift = new GifHelper();
                    $hex = $gift->encode($blocks);
                    file_put_contents($file, pack('H*', $hex));
                } else {
                    imagegif($image->getCore(), $file);
                }
                break;
            case ImageType::PNG:
                // PNG is lossless and does not need compression. Although GD allow values 0-9 (0 = no compression), we leave it alone.
                imagepng($image->getCore(), $file);
                break;
            default:
                // Defaults to jpeg
                $quality = $quality === null ? 75 : $quality;
                // Default to 75 (GDs default) if null.
                $quality = $quality > 100 ? 100 : $quality;
                $quality = $quality < 0 ? 0 : $quality;
                imageinterlace($image->getCore(), $interlace);
                imagejpeg($image->getCore(), $file, $quality);
        }
        return $this;
    }