Вывод исходного потока изображения, а не jpeg, изменение размера изображения

У меня есть функция php, которая делает изменение размера изображения на лету для создания миниатюр.

У меня возникают проблемы, поскольку он просто отображает поток необработанного изображения вместо фактического изображения.

Мой код использует функцию под названием thumbnail:

$thumbnail = thumbnail($item['filename'], 209, 137); imagejpeg($thumbnail); 

Ive попытался вставить:

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

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

Вы либо

Сделайте это обычным способом

Это означает, что вы указываете на один URL-адрес и обслуживаете содержимое одного изображения:

 <img src="myimage.php"> 

и myimage.php – это скрипт, который выглядит так:

 header('Content-type: image/jpeg'); echo imagejpeg($thumbnail); die; 

Преимущество этого метода состоит в том, что он … нормальный способ делать вещи.

ИЛИ

Вывод изображения в линию

Использование данных uris, выводящих содержимое в качестве кодированной в base64 строки

 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot"> 

Этот метод наиболее подходит для небольших изображений.

Это имеет то преимущество, что все изображения находятся в основном запросе http – в (возможно, значительном) недостатке, чтобы сделать страницу более сложной для редактирования / сборки и, возможно, отрицать преимущества кеширования браузера (если сама страница html не кэшируется).

Быть нормальным легче

Относительно этого утверждения в вопросе:

Однако это просто ожидает, что полная страница будет изображением

Правильно – если вы делаете это обычным способом, вы хотите указать на свой php-скрипт с атрибутом src тега изображения, а на сервере – только изображение – то есть тот же самый ответ, как если бы вы указывали на файл изображения с браузером ,

Если у вас нет веских оснований делать что-то по-другому – «нормальный» путь – это хорошее место для начала.

Вы можете указать тэг html img в php-файл.

 <img src='thumbnail.php?file=<?php echo $item['filename']; ?>' /> 

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

 $thumbnail = thumbnail($_GET['filename'], 209, 137); imagejpeg($thumbnail); header("Content-type: image/jpeg"); 

Вам нужно вставить изображение, как в обычное изображение в HTML, и создать изображение в отдельном файле PHP:

image.php

 <?php $img = imagecreate(100,100); //Create an image 100px x 100px imagecolorallocate($img, 255,0,0); //Fill the image red header('Content-type: image/jpeg'); //Set the content type to image/jpg imagejpeg($img); //Output the iamge imagedestroy($img); //Destroy the image ?> 

myWebpage.html

 <img src="image.php" />