Получить размеры JPG из частичного извлечения без записи на диск - PullRequest
0 голосов
/ 21 сентября 2011

Я написал PHP-скрипт, который позволяет мне получать размеры (ширину и высоту) удаленно размещенного JPG без необходимости загружать его полностью (только первые 10 КБ).

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

Я знаю, что это может быть не записано на диск, но я не знаю как.

У кого-нибудь есть предложения / решения?

Вот мой оригинальный код:

function remoteImage($url){
    $ch = curl_init ($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    curl_setopt($ch, CURLOPT_RANGE, "0-10240");

    $fn = "partial.jpg";
    $raw = curl_exec($ch);
    $result = array();

    if(file_exists($fn)){
        unlink($fn);
    }

    if ($raw !== false) {

        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        if ($status == 200 || $status == 206) {

            $result["w"] = 0;
            $result["h"] = 0;

            $fp = fopen($fn, 'x');
            fwrite($fp, $raw);
            fclose($fp);

            $size = getImageSize($fn);

            if ($size===false) {
            //  Cannot get file size information
            } else {
            //  Return width and height
                list($result["w"], $result["h"]) = $size;
            }

        }
    }

    curl_close ($ch);
    return $result;
}

Мой оригинальный вопрос, который привел к этому, - здесь - и можетбыть полезным .

1 Ответ

1 голос
/ 21 сентября 2011

Возможно использование потока файлов памяти.

$fn = 'php://memory';

См .: http://php.net/manual/en/wrappers.php.php

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