Как получить Content-Length для выдачи графического файла JPG через GD?

A
На сайте с 20.09.2009
Offline
64
1929

Делаю так вывод заголовка выдачи графического файла JPG через GD

header('HTTP/1.1 200 Ok');

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

header('Accept-Ranges: bytes');

header("Content-Length: xxxxxx");

imagejpeg($image);

imagedestroy($image);

Мне необходимо получить параметр для Content-Length, но файл-то генерируется и в природе не существует. Как получить Content-Length для выдачи в заголовок хидера?

Бесплатный хостинг - 150 MB Disk Space, 4 GB Monthly Traffic, 1 Domain Hosting, MySQL(v.4/5), PHP4/5, Perl, CGI-BIN (http://a-online.org.ua) БЕСПЛАТНЫЙ ХОСТИНГ - безлим. трафик, 3 GB под сайт, PHP, MySQL, cPanel, FTP (http://www.free-web-host.me/?ref=27772)
S
На сайте с 28.10.2005
Offline
319
#1

Обязательно каждый раз выдавать картинку через скрипт, может стоит кешировать на диск?

Content-Length необязателен

A
На сайте с 20.09.2009
Offline
64
#2
semenov:
Обязательно каждый раз выдавать картинку через скрипт, может стоит кешировать на диск?

Content-Length необязателен

кешировать на диск нет возможности - немного места на хостинге

а вот Content-Length весьма нужен - я вижу без него гугля не хочет нормально картинки индексировать

N
На сайте с 06.05.2007
Offline
419
#3

Хелп на php.net почитали бы

ob_start(); // start a new output buffer

imagejpeg( $newimage, "", 90 );

$ImageData = ob_get_contents();

$ImageDataLength = ob_get_length();

ob_end_clean(); // stop this output buffer

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

header("Content-Length: ".$ImageDataLength);

echo $ImageData;

Кнопка вызова админа ()
bbon
На сайте с 01.04.2006
Offline
168
#4
avax:
Мне необходимо получить параметр для Content-Length, но файл-то генерируется и в природе не существует. Как получить Content-Length для выдачи в заголовок хидера?

Как не существует, сначала же изображение все равно содержится в какой-то переменной? Определить длину содержимого этой переменной в режиме binary и величину отдать в качестве Content-Length.

A
На сайте с 20.09.2009
Offline
64
#5
bbon:
Как не существует, сначала же изображение все равно содержится в какой-то переменной? Определить длину содержимого этой переменной в режиме binary и величину отдать в качестве Content-Length.

А можно на примере?

bbon
На сайте с 01.04.2006
Offline
168
#6
avax:
А можно на примере?

пример на perl-е вас вряд ли устроит, впрочем ладно:


binmode STDOUT;
$contentlength = length $img;
....
print "Content-Length: $contentlength\n";

а на php мне кажется вполне похожую вещь уже написал netwind :)

Bitman
На сайте с 05.07.2009
Offline
112
#7

К сожалению, в переменной не содержится. Варианта 2: перехватывать вывод как у netwind, либо сохранять на диск и брать оттуда

Северный лес (https://euro-vagonka.by) DREW (https://drew.by) AvtoDrive (https://avtodrive.by)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий