Работа с изображениями в PHP

КД
На сайте с 18.08.2011
Offline
7
662

Здравствуйте!

Имеется следующий php код, с помощью его из любого изображения мы получаем изображение размером 90x90 с вырезом посередине (тоесть вырезается квадрат из изначального изображения)

// Создание квадрата 90x90

// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности
// im - изначальное изображение

$w = 90; // квадратная 90x90. Можно поставить и другой размер.

// создаём исходное изображение на основе
// исходного файла и определяем его размеры
$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения

// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат
$dest = imagecreatetruecolor($w,$w);

// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже серединку)
if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

// квадратная картинка масштабируется без вырезок
if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);

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

Заранее спасибо!

rammlied
На сайте с 13.04.2011
Offline
56
#1

// Создание прямоугольника скока угодно на скока угодно

// dest - результирующее изображение

// w - ширина изображения

// h - высота изображения

// ratio - коэффициент пропорциональности

// im - изначальное изображение

$w = 90; // Ширина. Можно поставить и другой размер.

$h = 90; // Высота. Можно поставить и другой размер.

// создаём исходное изображение на основе

// исходного файла и определяем его размеры

$w_src = imagesx($im); //вычисляем ширину

$h_src = imagesy($im); //вычисляем высоту изображения

// создаём пустую квадратную картинку

// важно именно truecolor!, иначе будем иметь 8-битный результат

//тут нужно посотреть что первым передовать что вторым

$dest = imagecreatetruecolor($w,$h);

// вырезаем серединку по x, если фото горизонтальное

if ($w_src>=$h_src)

imagecopyresampled($dest, $im, 0, 0,

round((max($w_src,$h_src)-min($w_src,$h_src))/2),

0, $w, $h, min($w_src,$h_src), min($w_src,$h_src));

// вырезаем верхушку по y,

// если фото вертикальное (хотя можно тоже серединку)

if ($w_src<$h_src)

imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $h,

min($w_src,$h_src), min($w_src,$h_src));

//в условии добавляем больше либо равно (в верхнем или нижнем, неважно)

//а вообще в таких случаях лучше не сидеть разбираться с координатами смотря в код, а менять в коде разные значения и смотреть что получается

делаю СДЛы, получаются ГСы )

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий