Как я могу захватить центральную часть загруженного изображения?(сделать эскиз) - PullRequest
1 голос
/ 25 марта 2012

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

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

Знаете ли вы, как я могу захватить центральную часть (или обрезать стороны) загруженного изображения?Или вы знаете какой-нибудь скрипт, который справится с этим?

Большое спасибо

С уважением

РЕДАКТИРОВАТЬ:

echo '<div class="pic" style="background-image: url(upload/photos/'.$photo1.')"></div>';

и

    .pic {

    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
}

Ответы [ 3 ]

0 голосов
/ 25 марта 2012

Вы можете найти мой письменный скрипт в моем репозитории github.Вот, пожалуйста, протестируйте и дайте мне знать.

URL: https://github.com/armpogart/Examples/blob/master/crop_resize/crop.php

0 голосов
/ 25 марта 2012

Вы ищете getimagesize().

Он принимает имя файла и возвращает массив, содержащий информацию об изображении.

Затем вы можете определить центр изображения следующим образом:

$image_info = getimagesize( $filename );
$width = $image_info[0];
$height = $image_info[1];    
$center = array($width/2,$height/2);

// continue proccessing your image //

Вы также можете проверить размеры и решить, хотите ли вы, чтобы ваше изображение было обрезано или нет. используя print_r($image_info); поможет тебе.

Удачи.

0 голосов
/ 25 марта 2012

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

Таким образом, если размер поля 100x100 пикселей, размер миниатюрных изображений необходимо изменить до ширины 100 пикселей для вертикального изображения и высоты 100 пикселей для горизонтального изображения.

Кстати, для современных браузеров вы можете использовать:

background-size: cover;

Чтобы изображение полностью покрывало рамку, сохраняя соотношение сторон.

Редактировать: Так что в вашем php вы бы сделали что-то вроде:

echo '<div style="background-image: url(' . $path_to_image . ');"></div>';

и в css:

background-position: center center;
background-repeat: no-repeat;
background-size: cover;
...