Изменение размера изображения любого размера до фиксированной ширины и высоты - PullRequest
1 голос
/ 19 февраля 2012

Я пробовал много способов сделать это, но у меня все еще много проблем с этим.

Можно ли изменить размеры всех изображений до фиксированной ширины и высоты?

Я хочу, чтобы каждое загруженное изображение с width>=200px и height>=260px было изменено до width=200px и height=260px, но я хочу сохранить некоторую пропорциональность и, если изображение больше 200x260px, пропорционально изменить его размер а затем захватить центр изображения 200x260px.

Мне просто нужна идея, чтобы знать, с чего начать и что делать, но если у вас есть пример, я бы хотел его увидеть. Спасибо.

Ответы [ 2 ]

5 голосов
/ 20 февраля 2012

Если вы хотите обрезать изображение, вы можете сделать это следующим образом: -

//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);
0 голосов
/ 19 февраля 2012

Чтобы начать писать функцию, мы должны объявить ее как таковую ... Затем мы должны добавить наши атрибуты. Мы хотим ограничить наше изображение, поэтому мы должны сообщить функции размеры, к которым мы хотим ее ограничить, и мы должны знать, каков будет исходный размер изображения (мы перейдем к этой части через секунду ).

<?php
function imageResize($width, $height, $target) {
//takes the larger size of the width and height and applies the
formula accordingly...this is so this script will work
dynamically with any size image
if ($width > $height) {
$percentage = ($target / $width);
} else {
$percentage = ($target / $height);
}
//gets the new value and applies the percentage, then rounds the value
$width = round($width * $percentage);
$height = round($height * $percentage);
//returns the new sizes in html image tag format...this is so you
can plug this function inside an image tag and just get the
return "width=\"$width\" height=\"$height\"";
}
?>

Прежде чем мы возьмем нашу новую функцию на тест-драйв, нам нужно получить ширину и высоту изображения, которое мы хотим отобразить. В PHP есть волшебная команда, называемая getimagesize (). Эта команда при правильном использовании вернет ширину, высоту, тип и даже ширину изображения в формате тега HTML-изображения (width = ”x” height = ”y”).

$mysock = getimagesize("images/sock001.jpg");

Теперь $ mysock - это массив, содержащий важную информацию о конкретном изображении, которое мы хотим отобразить. В индексе 0 у нас есть ширина ($ mysock [0]), а в индексе 1 у нас есть высота ($ mysock [1]). Это действительно все, что нам нужно, чтобы добиться того, чего мы хотим. Хотите увидеть функцию ... ну, функцию? Вот и мы!

Допустим, вы хотите отобразить список ваших красивых носков, но вы хотите, чтобы на странице было место, чтобы они отображались аккуратно в ряд и чтобы они не могли быть больше 150 пикселей в высоту или ширину.

<?php
//get the image size of the picture and load it into an array
$mysock = getimagesize("images/sock001.jpg");
?>
<!-using a standard html image tag, where you would have the
width and height, insert your new imageResize() function with
the correct attributes -->

<img src="images/sock001.jpg" <?php imageResize($mysock[0],
$mysock[1], 150); ?>>

Вот и все! Теперь, независимо от того, каков исходный размер файла, он будет ограничен не более чем 150 пикселями по ширине или высоте (или независимо от того, что вы укажете).

...