Nie no... Matma się kłania i to na poziomie proporcji poznawanych w 5 klasie podstawówki na oko oraz dodawania i odejmowania na poziomie 1 klasy podstawówki.
Bierzesz rozmiar wynikowy. Liczysz wielokrotność boku między oryginałem i wynikowym. Tam gdzie jest mniejsza liczba nastąpi przypisanie. Potem musisz policzyć z tym samym stopniem skalowania rozmiar drugiego rozmiaru dla oryginału, odjąć ten rozmiar od całej długości boku i ową wielkość podzielić przez 2, co wskaże miejsce kadrowania.
Przykład:
Oryginał 800 x 765
Kadr: 200 x 300
800(oryg)/200(kadr) = 4
765(oryg)/300(kadr) = 2,55
Bierzemy 765(wysokość oryginału) i obliczamy
200(szerokość kadru - przeciwległy do wybranego wymiar)*2,55 = 510
(800-510)/2 = 290 / 2 = 145 (miejsce rozpoczęcia kadrowania dla przeciwległego boku do wybranego)
A więc używamy imagecopyresampled gdzie z oryginału wyciągamy fragment o współrzędnych startu 145,0 i parametrach 510 x 765 po czym wtłaczamy do 200 x 300
Teraz te same dane, ale kadr "odwrócony":
Oryginał 800 x 765
Kadr:
300 x 200800(oryg)/300(kadr) = 2,66
765(oryg)/200(kadr) = 3,825
Bierzemy 800 (szerokość oryginału) i obliczamy
200(wysokość kadru - przeciwległy do wybranego wymiar)*2,66 = 533,333 ~= 533
(765-533)/2 = 232 / 2 = 116 (miejsce rozpoczęcia kadrowania dla przeciwległego boku do wybranego)
A więc używamy imagecopyresampled gdzie z oryginału wyciągamy fragment o współrzędnych startu 0,116 i parametrach 800 x 533 po czym wtłaczamy do 300 x 200
Popatrz jak zmieniło mi się wyliczanie. Raz mniejsza proporcja na szerokości, raz na wysokości, co zmieniło współrzędne dla kadrowania... Raz było 0,x a innym x,0. Popatrz na algorytm i pisz, bo funkcjami Ci tego okładać nie mam zamiaru. Czas na Twój ruch, a nie czekanie na gotowca.
P.S.: Oczywiście to jest kadrowanie obrazu do określonego wynikowego
ze skalowaniem całego obrazu do kadru wynikowego. Musisz też sprawdzić, czy aby któryś z wymiarów kadru nie jest większy od oryginału. Wyjdzie to przy skalowaniu... Te większe będą miały proporcję mniejszą niż 1. W takich wypadkach kod nieco się zmieni i będziesz musiał "dokładać" puste miejsce po bokach. Zostawiam Ci ten ostatni przypadek do samodzielnego przemyślenia. Najważniejsze w tym przypadku jest przemyślenie, który bok będzie uznany za ten, służący do wyliczenia proporcji dla drugiego. No i nieco inaczej będzie wyglądało wywołanie imagecopyresampled

Parametry bowiem będą ciut inaczej wyliczone. Tu będzie konieczne więcej obliczeń. No chyba, że mowa o zwykłym kopiowaniu fragmentu obrazu do wyniku bez przeskalowywania. Wtedy sprawa się mocno upraszcza.
Ale zwykłe kadrowanie
bez przeskalowywania odrób jako zadanie domowe z użyciem wspomnianej przez wookiego funkcji

EDIT: Zauważ, że istnieją 3 warianty kadrowania ze skalowaniem:
- oba wymiary oryginału są większe niż w kadrze (kadrowanie z pomniejszaniem)
- oba wymiary oryginału są mniejsze niż w kadrze (kadrowanie z powiększaniem)
- jeden z wymiarów oryginału jest mniejszy niż w kadrze (specyficzny przypadek pomniejszania z kadrowaniem )
Musisz je rozpoznać i odpowiednio zareagować.