Вывод широкоформатного изображения на страницу
Я пытаюсь использовать плагин WideImage и загружать в него изображение, изменять его размер, а затем выводить его в следующем виде:
<img class="image" src="image.jpg" />
У меня есть это до сих пор:
<?php
$image = WideImage::load('image.jpg');
$resizedImage = $image->resize(150, 150, 'outside')->crop('center', 'middle', 150, 150);
?>
Как вывести изображение с измененным размером, чтобы оно было в форме выше? Помогите!
3 ответа
Проблема заключается в том, что браузер пытается прочитать изображение, как если бы оно было текстовым, а точнее HTML-документом. Чтобы решить эту проблему, я бы создал новый скрипт php для обработки изображений, скажем, image.php
, с функцией получения пути к изображению, а также параметров модификации. В конце просто покажите изображение, как вы делали раньше, просто обязательно измените заголовок содержимого на что-то вроде:
header('Content-type: image/jpg');
или же
header('Content-type: image/png');
При этом браузер будет знать, как интерпретировать полученные данные.
Изменение размера
Вы можете изменить размер изображения, передав несколько параметров resize()
метод. Первые два являются новыми размерами изображения и могут быть умными значениями координат. Если одно измерение не указано (или задано значение NULL), оно рассчитывается по отношению другого измерения.
Измените размер изображения в поле 400×300. По умолчанию изменение размера сохраняет соотношение сторон исходного изображения, а полученное изображение соответствует заданным размерам изнутри.
$resized = $image->resize(400, 300);
Это равносильно передаче 'inside' в качестве значения $fit.
$resized = $image->resize(400, 300, 'inside');
Измените размер изображения, чтобы он соответствовал рамке 400×300 извне, передав параметр "outside" в $fit. Это означает, что изображение будет размером не менее 400×300, а соотношение сторон будет сохранено.
$resized = $image->resize(400, 300, 'outside');
Измените размер изображения, чтобы оно точно вписывалось в поле 400×300, передавая "заливка" в качестве значения параметра $fit. Изображение будет растягиваться по мере необходимости, соотношение сторон может не сохраняться.
$resized = $image->resize(400, 300, 'fill');
Четвертый параметр ($scale) определяет, когда масштабировать изображение. Возможные значения включают любые (по умолчанию), вниз и вверх:
down – resize if image is larger than the new dimensions
up – resize if image is smaller than the new dimensions
any – resize regardless of the image size
У метода resize есть два псевдонима: resizeUp и resizeDown. Эти два равны вызову resize() с $scale = 'up' и $scale = 'down' соответственно.
$resized = $image->resize(350, 500, 'inside', 'down');
// is equal to
$resized = $image->resizeDown(350, 500, 'inside');
в вашем HTML добавить
<img src= "<?= $resized ?>"> – Moises Zaragoza just now edit
Сначала вы должны сохранить изображение с измененным размером в виде файла. В тебе php ставят:
<?php
$image = WideImage::load('image.jpg');
$resizedImage = $image->resize(150, 150, 'outside')->crop('center', 'middle', 150, 150);
$resizedImage ->saveToFile('resized_image.jpg');
?>
Затем сделайте ваше изображение ссылкой на новый файл:
<img class="image" src="resized_image.jpg" />