Иногда бывает нужно загрузить в Интернет изображения и при этом отформатировать их по определенному правилу. Например, есть изображение 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», и возник вопрос. возможно ли сделать при загрузке на сайт интернет-магазина подобную обработку изображения (необходимо сделать пропорции одни и те же. причем все фото разные, при этом не испортить изображение, отрезав «нужные части» от изображенного предмета? и вообще возможно ли такое реализовать?
Я уже несколько выпал из темы. Помню, что изображения можно обрезать в любых пропорциях. Меня возможности очень сильно поразили.
Делать из прямоугольного квадратное. можно ставить квадратик как бы в угол
С пропорциями вообще должно получиться просто. Одним преобразованием.