Эта тема на forum.dklab.ru


oberon: Вывод картинки напрямую в браузер
Есть функция int imagejpeg (resource image [, string filename [, int quality]]), которая может выводить напрямую картинку, если второй параметр "string filename" оставить пустым.
У меня проблема, что выводится не картинка, а бинарный код в браузер. Что делать?
Код такой:

$file_name = "foto_view/view_".$checknum."_".$PhotoID.".jpg"; // заряжаем файл картинки

$sour = ImageCreateFromjpeg($file_name); // создаем картинку в памяти
$sizer = GetImageSize ($file_name);
$width = $sizer[0];
$height = $sizer[1];

$thur = imagecreatetruecolor($width, $height); // цвета
imagecopyresampled($thur, $sour, 0, 0, 0, 0, $width, $height, ImageSX($sour), ImageSY($sour)); // копирует и изменяет размеры части изображения с пересэмплированием
ImageJPEG($thur, "", 100); // выводим сразу в браузер
imagedestroy($thur); // удаляем из памяти
dimagolov:
надо отдавать правильные заголовки (в первую очередь Content-Type), чтобы браузер понял, что ему отдают не html, как это обычно бывает с php файлами, а что-то другое, например картинки.
oberon:
Заголовок ставил такой:
header("Content-Type: image/jpeg");

Тогда выводит вообще просто линк вызова страницы :(
oberon:
То есть, заголовок ставлю ПЕРЕД выводом конечно. Ошибок не пишет никаких. Просто в пустом ьраузере появляется линк вызова самой страницы со всеми параметрами просто текстом.
dimagolov:
Не Content-Type-ом единым жив браузер. Не поленитесь, поищите по Content-Type хотя бы в этом форуме, посмотрите как это делается.
oberon:
Вы знаете, искал и смотрел. Честно говоря, именно на эту тему (вывод в браузер имиджей напрямую из памяти) не нашел. Есть вывод каритнки из файла, но там все хедеры заключаются в том, чтобы определить файл, его тип и вывод ИЗ файла. Оттуда мне подошла только вышеприведеннаяч строчка. Все остальные примеры касались запрета вывода, организации даунлоада, запрета кэширования и прочее, не относящееся ко мне. Либо я совсем не понял, как работает функция header(). Хотя чего тут не понимать. вроде... Либо есть какие-то хитрости, которых я не знаю и не могу найти.
У меня задача - вывести изображение не из файла на диске, а именно из созданного изображения в памяти, так файл на диске не будет соответствовать выводимому. Сохранять и тут же удалять промежуточные файлы не хотелось бы. Нагрузка на диски тогда ожидается порядочная.
oberon:
Все, спасибо :) Нашел-таки темку... Не впрямую мое, но решение там было. Я пытался все же отформатировать выводимую картинку тэгами HTML, что в этом случае невозможно. Как написано - либо картинка, либо HTML. Мне смешивать их совсем необязательно. Теперь вывод в отдельное всплывающее окно работает отлично. Для непонявших тема раскрывается здесь: http://forum.dklab.ru/viewtopic.php?t=7941&highlight=
Тему можно закрывать :)

Эта тема на forum.dklab.ru