Определение размера картинки перед её выдачей

Mixan

Guest
Определение размера картинки перед её выдачей

Есть ли возможность определить размер (байт) картинки до её выдачи (т.е. вызова функции imagepng/jpeg...)?
 

Mixan

Guest
К сожалению нужно именно перед выдачей - в браузер или в файл...
 

icechel

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

Сори, опять не правильно прочитал задачу.
 

Krisha

pain in the neck
icechel , gun2rin
Неверно, у него еще нету самого файла, размер которого можно определить.

Mixan
Если ты уже сгенерил картинку, то она у тебя наверняка в переменной хранится, которой ты потом делаешь echo. Может быть тебе подойдет [m]strlen[/m] * 8 \ 1024 ? :)
Типа вредные советы...
 

gun2rin

Новичок
tony2001
Файла, на который например стоит ссылка <img src...>. Или не то нужно. "...До вывода в браузер..."

Опоздал.
 

Емин

Guest
Я тоже задам вопрос: вот у меня файл картинки. как под ней написать ее расширение
 

Mixan

Guest
размер файла откуда по-твоему берется ?
Теоретически вполне может существовать функция, которая работает аналогично imagepng, за исключением того что не выводит картинку, а возвращает конечные её параметры.
В каком-то смысле эмулятор...

Это первый вариант.

Второй вариант вариант, как я понимаю, практически не реален - это как-то вмешиваться в процесс работы функции вывода картинки, дабы перехватить момент вывода самой картинки в браузер и там уже по ситуации...
 

SiMM

Новичок
Автор оригинала: Mixan
К сожалению нужно именно перед выдачей - в браузер или в файл...
А зачем, можно поинтересоваться? Может твоя задача имеет другое, неочевидное решение, либо тебе этого и вовсе ненужно.
 

tony2001

TeaM PHPClub
Mixan
записывай картинку во временный файл (см. второй аргумент у imagepng()), затем filesize(), затем выдавай её и удаляй (если надо).
 

Mixan

Guest
Если выводить картинку в файл то получится ещё такой процесс:
1) Сохранение картинки в файле
2) Чтение её параметров
3) Удаление картинки
При благоприятных условиях (т.е. картинки подходит по размеру):
4) Вывод картинки уже через функцию вывода напрямую в браузер (либо чтение через readfile, тогда удаление будет 5-м, а не 3-м шагом)

Учитывая что нагрузка на скрипт бывает довольно серьезная + нет никаких гарантий, что выходной файл не будет весить под мегабайт а то и больше - подобные операции производить не хотелось бы.

-~{}~ 07.04.04 13:41:

Чтобы вы лучше могли себе представить...

Скрипт занимается генерацией картинок для подписей пользователей на форумах. Т.е. вот допустим тема - 30 сообщений. В настройках пользователя поставлен вывод 30 сообщений на страницу.

Вот заходит пользователь в тему - и тут же на скрипт поступают 30 запросов на генерацию картинки.

И это - лишь один пользователь, лишь в теме с 30 сообщениями и настройками на вывод 30 сообщений. А если тема - на 50 сообщений, а у пользователя установлен вывод всех сообщений темы на одной странице...
 

tony2001

TeaM PHPClub
кэшируй картинки и выдавай их сходу, не создавая заново, если такие картинки в кэше уже есть.
 

Mixan

Guest
Трабла в том что инфа на картинках меняется динамически.
 

vladax

Новичок
Mixan,

Дык ты сначала проверь:

PHP:
if ($_FILES['File']['size'] > 51200) $err.="Размер загружаемого файла ".number_format(($_FILES['File']['size']/1024), "1", ".", " ")." Кбайт. Максимально допустимый размер 50 Кбайт!";

if ($_FILES['File']['size'] < 1) $err.="Размер загружаемого файла ".$_FILES['File']['size']." байт. Файл не может быть загружен!";
 
Сверху