Огромный лаг после использования imagepng - PullRequest
0 голосов
/ 09 января 2012

У меня есть сценарий, когда пользователь загружает файл изображения.Я удаляю цвет фона (определяемый как цвет в верхнем левом углу) ... и сохраняю в файл с imagepng.

Сначала я попытался отобразить какой-нибудь html, который напрямую вызывал это имя файла, но это заняло бы столько времени, сколькосемь минут для появления изображения (это 6k файл, ничего особенного).Я прочитал, что вы не должны пытаться использовать опубликованные данные в том же запросе, поэтому вместо вывода изображения я изменил его на ссылку на вторую страницу, которая получит изображение.

Нопроисходит такое же отставание.Я не делал много манипуляций с изображениями, поэтому цените любые указания, где я ошибся, или способы ускорить процесс.Моя конечная цель состоит в том, чтобы пользователь мог загружать более 10 изображений одновременно

Вот основной код, viewing_page.html был просто <img src="target.png"/>

<?php
if($_FILES['test']['tmp_name']){
    //some validation is necessary, this is just a proof of concept for a friendly user test
    if($_FILES['test']['type']=="image/png"){
        $im = imagecreatefrompng($_FILES['test']['tmp_name']);
    }
    if(($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")){
        $im = imagecreatefromjpeg($_FILES['test']['tmp_name']);
    }
    if($_FILES['test']['type']=="image/gif"){
        $im = imagecreatefromgif($_FILES['test']['tmp_name']);
    }
    //determine background RGB
    $rgb = imagecolorat($im, 0, 0);
    $r = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> 8) & 0xFF;
    $b = $rgb & 0xFF;
    $background = imagecolorallocate($im, $r, $g, $b);
    // Make the background transparent
    imagecolortransparent($im, $background);
    imagepng($im,'target.png');
    imagedestroy($im);
    echo "<a href=\"viewing_page.html\">View</a>";
    //echo "<img src=\"target.png\"/>"; //-----------this was my first (and preferred) approach
    }
else{
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body bgcolor="#00CCFF">
    <form action="" method="post" enctype="multipart/form-data">
    <input name="test" type="file" />
    <input type="submit" value="Submit" />
    </form>
    </body>
</html>
    <?php
}
?>

1 Ответ

1 голос
/ 09 января 2012

Действительно ли imagepng генерирует файл .png так долго, или ваш веб-сервер не обслуживает изображение, пока ему не исполнится 7 минут?В моей системе (Linux, PHP 5.3.6) и с вашим кодом изображение доступно сразу.

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