Изменение размера изображения PHP с использованием GD для многих процессорного времени - PullRequest
0 голосов
/ 10 мая 2019

У меня есть скрипт на PHP GD с простыми функциями изменения размера изображений в реальном времени на моем сайте, но этот процесс "съедает" все мое процессорное время ... Я использую VPS с 4 ядрами, и этого недостаточно.

Из тега изображения я вызываю файл PHP (<img src="image.php?file=XXX&width=XXX&height=XXX" alt="" />) с именем изображения, новой шириной и новой высотой ... после этого в PHP я делаю следующие операции:

ob_start();

ini_set('max_execution_time', 0);
set_time_limit(0);

error_reporting(E_ALL^E_NOTICE^E_DEPRECATED);
date_default_timezone_set('Europe/Sofia');

header('Content-type: image/jpeg');

    $url = $_GET['file'];

    if(!empty($url) && file_exists($url) && is_file($url) && is_readable($url)){
        $width = $_GET['width'];
        $height = $_GET['height'];

        list($width_orig, $height_orig) = getimagesize($url);

        if(empty($width)) $width = $width_orig/($height_orig/$height);
        if(empty($height)) $height = $height_orig/($width_orig/$width);

        $ratio_orig = $width_orig/$height_orig;

        if($width/$height > $ratio_orig) {
            $width = $height*$ratio_orig;
        } else {
            $height = $width/$ratio_orig;
        }

        $image_p = imagecreatetruecolor($width, $height);
        $image = imagecreatefromjpeg($url);

        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
        imagejpeg($image_p, null, 100);
        imagedestroy($image_p);
        imagedestroy($image);
    }

    ob_end_flush();

Я не понимаю, почему "есть", чтобы соответствовать времени процессора ... мой исходный размер изображения составляет 1920x2880 пикселей. Как уменьшить загрузку моего процессора? Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...