View file assets/modules/downloads/preview.php

File size: 1.44Kb
<?php

/**
 * This file is part of JohnCMS Content Management System.
 *
 * @copyright JohnCMS Community
 * @license   https://opensource.org/licenses/GPL-3.0 GPL-3.0
 * @link      https://johncms.com JohnCMS Project
 */

declare(strict_types=1);

use Intervention\Image\ImageManager;

if (! isset($_GET['img'])) {
    exit;
}

require '../../../system/vendor/autoload.php';

$width = 220;
$height = 300;

$copyright = '';
$type = isset($_GET['type']) ? (int) $_GET['type'] : 0;
$image = htmlspecialchars(rawurldecode($_GET['img']));
$image = '../../../' . strtr($image, ['../' => '', '//' => '/', './' => '_',]);

if ($image && file_exists($image)) {
    $att_ext = strtolower(pathinfo($image, PATHINFO_EXTENSION));
    $pic_ext = [
        'gif',
        'jpg',
        'jpeg',
        'png',
    ];

    if (in_array($att_ext, $pic_ext, true)) {
        /** @var ImageManager $manager */
        $manager = di(ImageManager::class);
        $resized = $manager->make($image)
            ->resize(
                $width,
                $height,
                function ($constraint) {
                    /** @var $constraint Intervention\Image\Constraint */
                    $constraint->aspectRatio();
                    $constraint->upsize();
                }
            );
        $bg = $manager->make($image)
            ->fit($width, $height)
            ->blur(20)
            ->insert($resized, 'center');

        echo $bg->response('jpg', 100);
    }
}