У меня есть функция 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" />