2012-03-24 2 views
1

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

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

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

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

С уважением

EDIT:

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

и

.pic { 

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

ответ

0

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

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

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

background-size: cover; 

Так что изображение полностью закрывает окно, сохраняя пропорции.

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

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

и в CSS:

background-position: center center; 
background-repeat: no-repeat; 
background-size: cover; 
+0

Привет, спасибо за ваш ответ. Я попробую это и дам вам знать. Привет – alexx0186

+0

Привет, я использовал что-то похожее на то, что вы предложили. Я обернул изображения в div, установил высоту и ширину и использовал свойство overflow: hidden. Но проблема в том, что я вижу верхний левый угол изображения.Вы знаете, как разместить центр изображения в центре div? спасибо большое – alexx0186

+0

@ alexx0186 Есть, возможно, трюки для достижения этого с помощью javascript, но гораздо проще с фоновым изображением ... Почему бы вам не использовать фоновое изображение? – jeroen

0

Вы ищете 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); Вам поможет.

Удачи.

Смежные вопросы