PHP обрезают изображение для фиксации ширины и высоты, не теряя отношение размера

Я надеюсь создавать миниатюры, который имеет размер 100 пкс на 100 пкс. я видел, что много статей объясняют методы, но большинство заканчивает тем, что имело ширину! =height, если отношение размера должно быть сохранено.

например, у меня есть изображение 450 пкс на 350 пкс. я хотел бы обрезать к 100 пкс на 100 пкс, если бы я должен был сохранить отношение, то я закончил бы тем, что имел 100 пкс на 77 пкс. это делает это ужасным, когда я перечисляю эти изображения подряд и столбец. однако, изображение без отношения размера будет выглядеть ужасным также.

я видел изображения от flickr, и они выглядят фантастическими. например:
миниатюра: http://farm1.static.flickr.com/23/32608803_29470dfeeb_s.jpg
средний размер: http://farm1.static.flickr.com/23/32608803_29470dfeeb.jpg
большой размер: http://farm1.static.flickr.com/23/32608803_29470dfeeb_b.jpg

спасибо

12
задан Mike 15 July 2010 в 13:19
поделиться

2 ответа

Для этого в качестве эскиза используется только часть изображения с соотношением сторон 1: 1 (в основном центр изображения). Если вы присмотритесь, то увидите это на миниатюре flickr.

Поскольку в вашем вопросе есть слово «кадрирование», я не уверен, что вы этого еще не знали, но что вы хотите знать тогда?

Вот пример использования кадрирования:

//Your Image
$imgSrc = "image.jpg";

//getting the image dimensions
list($width, $height) = getimagesize($imgSrc);

//saving the image into memory (for manipulation with GD Library)
$myImage = imagecreatefromjpeg($imgSrc);

// calculating the part of the image to use for thumbnail
if ($width > $height) {
  $y = 0;
  $x = ($width - $height) / 2;
  $smallestSide = $height;
} else {
  $x = 0;
  $y = ($height - $width) / 2;
  $smallestSide = $width;
}

// copying the part into thumbnail
$thumbSize = 100;
$thumb = imagecreatetruecolor($thumbSize, $thumbSize);
imagecopyresampled($thumb, $myImage, 0, 0, $x, $y, $thumbSize, $thumbSize, $smallestSide, $smallestSide);

//final output
header('Content-type: image/jpeg');
imagejpeg($thumb);
38
ответ дан 2 December 2019 в 03:25
поделиться

Мне нравится использовать GDLib для работы с изображениями, с ним фантастически легко работать. Есть много статей в блогах и учебников. Однако я бы рекомендовал использовать для этого класс или что-то подобное, поскольку забота обо всех вариациях изображения может отнять много времени.

0
ответ дан 2 December 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: