Большой Воронежский Форум
» Программирование>PHP, вывод изображения
A-Maverick 12:42 30.09.2009
Ситуация: имеется файл-картинка, которую необходимо вывести. По некоторым причинам прямой доступ к файлу открывать не нужно. Соответственно, приходится выводить картинку через скрипт.
Всю жизнь делал это посредством функций:
[PHP]imagecreatefromjpeg(...)
imagejpeg(...)[/PHP]
И только на днях задумался, а почему для этого нельзя использовать простой "echo", предварительно считав данные через file_get_contents(...) ?

Попробовал - работает. Но в интернете почему-то плюют в тех, кто выводит изображения таким способом. А почему? Не нужно выделять память под целый класс, а лишь для данных изображения, к тому же вывод на порядок легче, если требуется выводить картинки разного формата(не нужно выбирать нужную функцию вместо imagejpeg).
В чём негативная сторона данного метода? [Ответ]
1000w 13:41 30.09.2009

Сообщение от A-Maverick:
В чём негативная сторона данного метода?

content-type не тот [Ответ]
-=QWERTY=- 15:03 30.09.2009

Сообщение от 1000w:
content-type не тот

Его легко прописать header('Content-type: image/jpeg') [Ответ]
1000w 15:25 30.09.2009
-=QWERTY=-, ну и выводите таким способом - никто вам не мешает. просто в рантайме изменить картинку вы не сможете. [Ответ]
-=QWERTY=- 16:15 30.09.2009

Сообщение от 1000w:
-=QWERTY=-, ну и выводите таким способом - никто вам не мешает. просто в рантайме изменить картинку вы не сможете.

да, изменять, конечно нельзя, но зато через эхо в разы быстрее получается, а если про изменять ничего не было, =) [Ответ]
A-Maverick 19:43 30.09.2009

Сообщение от 1000w:
content-type не тот

Вообще говоря, контент-тайп и при выводе через imagejpeg нужно прописывать отдельно. [Ответ]
Rаvel 10:43 01.10.2009
тогда придется еще и читать заголовок файла, чтобы определить тип изображения,
а так - хоть readfile'ом, даже эффективнее чем echo )) [Ответ]
dr-sm 23:30 01.10.2009
оптимальный способ fpassthru [Ответ]
Morok 10:22 02.10.2009
Где-то у меня лежит самописный php-скрипт - ловит тип файла, на лету меняет контент-тайп, выводит, при необходимости ресайзит с полями или кропом, попутно можно задать цвет полей.

В общем, такая штука может работать везде. Но как-то не прижилась, хотя бывает к месту. [Ответ]
Вверх