PHP. Как обрезать картинку по ширине

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

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

Решением этого как раз и стала обрезка картины по ширине. Что бы сделать на PHP эту оберзку, напишем простенькую функцию, взяв несколько строк от урока ресайз изображений на PHP:

function newWidth($filename, $width_new=225) {

    list($width, $height) = getimagesize($filename);

    if ($width > $width_new) {

        $src = imagecreatefromjpeg($filename);
        $thumb = imagecreatetruecolor($width_new, $height);
        $x_pos = (($width - $width_new) / 2); //Отступа от края

        imagecopyresampled($thumb, $src, 0, 0, $x_pos, 0, $width, $height, $width, $height);
        //Копирование и изменение размера изображения с ресемплированием

        return imagejpeg($thumb, $filename); //сохраняет JPEG
    }
}

newWidth('test.jpg');

В данном примере стоит обратить внимание пожалуй только на $x-pos – это как раз и есть тот самый отступ в исходной картинке, с места которого мы копируем изображение на новый холст с новыми размерами. Если кому то понадобиться то на основе этого примера можно сделать обрезку картинок по высоте на PHP, изменив ширину на высоту, или добавить какие то условия нужные вам.

Удачи!

Написать комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*

*