Как обрезать изображение на PHP

Иногда бывает нужно загрузить в Интернет изображения и при этом отформатировать их по определенному правилу. Например, есть изображение 400* 900, и из этого изображения следуюет вырезать серединку и привести изображение к 400*300. Вторая частая задача состоит в том, чтобы сделать превью загруженных на сервер изображений, то изображение малого размера, например, 150*115.

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

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

Данный код я использовал для форматирования данных для проекта раскрасок.


 $k_out) $width_orig = $height_orig * $k_out ;  else $height_orig = $width_orig / $k_out ;


///////////////////////// если картинка не попадает под пропорции 400*300, то часть оригинала нужно обрезать.
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {$width = $height*$ratio_orig;} else {$height = $width/$ratio_orig;}

//// отцентровать будущую картинку отцентровать по центру оригинала
$x_shift =  ($width_orig_  - $width_orig) /2;
$y_shift =  ($height_orig_  - $height_orig) /2;

$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, $x_shift, $y_shift, $width, $height, $width_orig, $height_orig);

header('Content-type: image/jpeg');
imagejpeg($image_p, null, 100); // вывод на экран

$name_pic ="out400.jpg";

imagejpeg($image_p, $name_pic);

//////////////////////Если нужно из того же материала сделать втроую картинку
///////////////////////////////////// создание картинки превьюшки

$width = 150;
$height = 115;
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

$name_pic ="out150.jpg";
imagejpeg($image_p, $name_pic);


// http://fun4child.com/jigsaw/jig_adm/400_resize.php
?>



Как обрезать изображение на PHP: 2 комментария

  1. Елена

    Прочитала ваш метод «Как обрезать изображение на PHP», и возник вопрос. возможно ли сделать при загрузке на сайт интернет-магазина подобную обработку изображения (необходимо сделать пропорции одни и те же. причем все фото разные, при этом не испортить изображение, отрезав «нужные части» от изображенного предмета? и вообще возможно ли такое реализовать?

  2. serge_mikhailov Автор записи

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

    Делать из прямоугольного квадратное. можно ставить квадратик как бы в угол

    С пропорциями вообще должно получиться просто. Одним преобразованием.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *