Это довольно просто, задокументировано здесь
Параметры:
1) $ dst_image, действительный дескриптор GD, представляющий изображение, которое вы хотите скопировать INTO
2) $ src_image, допустимый дескриптор GD, представляющий изображение, которое вы копируете ИЗ
3) $ dst_x - X смещение в целевом изображении, в которое вы хотите поместить передискретизированное изображение в
4) $ dst_y - смещение по Y, то же самое
5) $ src_x - X смещение исходного изображения, с которого вы хотите начать копирование
6) $ src_y - смещение по Y, то же самое
7) $ dst_x - ширина X вновь пересчитанного изображения в $ dst_image
8) $ dst_y - ширина Y, то же самое
9) $ src_x - X ширина области для копирования из $ src_image
10) $ src_y - ширина Y, то же самое
Итак ...
У вас есть $ src_image 800x536 и $ dst_image 75x75
$width = 800 $new_width = 75
+-----------------------+ +----+
| | | |
| | | | $new_height = 75
| | $height = 536 +----+
| |
| |
+-----------------------+
Звучит так, будто вы хотите взять средний кусок исходного изображения и сделать из него миниатюру, верно? Этот средний кусок должен представлять половину высоты и ширины исходного изображения, поэтому вы хотите:
$start_X = floor($width / 4); // 200
$width_Y = floor($height / 4); // 134
200 400 200
+-----------------------+
| | | | 134
|-----+----------+------|
| | This part| | 268
|-----+----------+------|
| | | | 134
+-----------------------+
$end_x = $start_X + (2 * $start_x) // 3 * $start_x = 600
$end_y = $start_Y + (2 * $start_y) // 3 * $start_y = 402
imagecopyresampled($src, $dst, 0, 0, $startX, $start_y, 75, 75, $end_x, $end_y);
a b c d e f g h
a, b - начать вставку нового изображения в верхний левый угол конечного изображения
c, d - начать отсасывание пикселей из исходного изображения в 200 134
e, f - сделать измененное изображение размером 75x75 (заполнить миниатюру)
g, h - остановить копирование пикселей с разрешением 600x402 в исходном изображении
Теперь предполагается, что вы хотите, чтобы миниатюра была полностью заполнена. Если вы хотите, чтобы исходное изображение было пропорционально сокращено (поэтому оно имеет тот же коэффициент высоты / ширины, что и оригинал, то вам придется выполнить некоторые математические операции для настройки параметров a,b
и e,f
.