GD как узнать размер файла, в байтах, на выходе?

Macintosh

Новичок
Всем привет!

Простенький пример:

Делаем привьюшку.

PHP:
$src = 'file.jpg';
 
$src = imagecreatefromjpeg($src);
 
$new = imagecreatetruecolor(800, 600);
 
imagecopyresampled($new, $src, 0, 0, 20, 20, 800, 600, 200, 200);
 
header('Content-type: image/jpeg');
 
imagejpeg($new, null, 100);
Вопрос!!! Как узнать размер файла в байтах, на выходе?
 

Вурдалак

Продвинутый новичок
ob + strlen

P.S. Правда есть нездоровый костыль для PHP, который переопределяет strlen() и прочие строковые функции на mb-аналоги, придётся использовать mb_internal_encoding.
 

Absinthe

жожо
Правда есть нездоровый костыль для PHP, который переопределяет strlen() и прочие строковые функции на mb-аналоги
Имхо под него надо затачивать лишь код под плагины для популярных КМС.
Для готового веб-приложения всегда считать его выключенным.
 

Macintosh

Новичок
ob + strlen

P.S. Правда есть нездоровый костыль для PHP, который переопределяет strlen() и прочие строковые функции на mb-аналоги, придётся использовать mb_internal_encoding.
Что-то я вас не понял совсем, можно подробнее, или примерчик? Вообще не понял, ob - это что? И как вообще поможет функция strlen()?
 

Macintosh

Новичок
Никогда не пользовался функциями контроля вывода, но немного ознакомившись с ними, пришел к такому варианту.

PHP:
ob_start();
imagejpeg($new, null, 100);
$val = ob_get_length();

В переменной $val получаем количество байт. И strlen() не понадобился. Но это нужно еще тестировать! Что скажите сойдет? Или можно как-то лучше сделать?
 

freeek

Новичок
ob + strlen
P.S. Правда есть нездоровый костыль для PHP, который переопределяет strlen() и прочие строковые функции на mb-аналоги, придётся использовать mb_internal_encoding.
Что-то я вас не понял совсем, можно подробнее, или примерчик? Вообще не понял, ob - это что? И как вообще поможет функция strlen()?
mbstring.func_overload in php.ini
 

WMix

герр M:)ller
Партнер клуба
переписать htaccess на несуществующий файл
Код:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ create_preview.php [NC,L]
PHP:
if(!file_exists(filesize($filename))){
// create
// imagejpeg($new, $filename, 100);
}
//filesize($filename); 
//readfile($filename);
 

Macintosh

Новичок
Спасибо за подсказки, но не чего в моем случае не получается. (
Дело в том что картинка у меня выводится вот таким примерно образом:

PHP:
$request = 'engine/modules/create_image.php?id='.$id.'&type='.$type.'&src='.$src.'&wd='.$wd.'&hd='.$hd.'&x='.$x.'&y='.$y;
 
echo '<img src="'.$request.'" />';
И поскольку этот вариант:

PHP:
ob_start();
imagejpeg($new, null, 100);
$filesize = ob_get_length();
может работать только в том файле который генерирует картинку, то получить доступ к переменной $filesize нет возможности, ну или я просто не придумал как получить к ней доступ ( Поэтому наверно не получится (
 

WMix

герр M:)ller
Партнер клуба
PHP:
$id.'&type='.$type.'&src='.$src.'&wd='.$wd.'&hd='.$hd.'&x='.$x.'&y='.$y
если эта инфа из базы данных то она уже хранится, если из конфига то хранится в конфиге, если в программе то это уже ошибка!
как бы там нибыло
PHP:
$path.'/'.$wd.'_'.$hd.'_'.$x.'_'.$y.'_'.$src
вполне нормальное имя
 

Macintosh

Новичок
Эта инфа приходит из GET а в GET попадает из JS со страницы где делается ресайз и кроп этих самых картинок
 

WMix

герр M:)ller
Партнер клуба
кем делается? конечным пользователем? эта превьюшка одноразовая?
 

Macintosh

Новичок
Да, пользователь сделал, ему открылся результат в новой вкладке, картинка не создается только в памяти, пользователь скачал, закрыл вкладку и картинка исчезла без следов.
 

Macintosh

Новичок
И вот на этой вкладке я вывожу разрешения получившейся картинки, и хотел вывести ее размер в KB, MB ну и т.д. Но не могу придумать как (
 

Macintosh

Новичок
А я его не посылаю. Я посылаю только:

PHP:
header('Content-Type: image/jpeg');
header('Content-Disposition: attachment; filename='.$filename);
 
Сверху