To czytaj dokładnie opis parametrów z manuala. Poza tym zwróć uwagę
jakiej funkcji używasz. Czy chcesz
skopiować kawałek obrazka czy
skopiować i przeskalować. Bo od tego są 3 różne funkcje (do 2 przypadku są 2 funkcje). I pamiętaj, że w GD liczenie współrzędnych obrazu jest od lewego górnego rogu! czyli współrzędne 20, 50 oznaczają, że obiekt w obrazie ma być 20px na lewo i 50px w dół od lewego górnego.
imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h ) - kopiuje wybrany fragment pliku źródłowego do wynikowego,
resource $dst_im - wskaźnik na obiekt wynikowy,
resource $src_im - wskaźnik na obiekt źródłowy,
int $dst_x - odległość od lewej w obrazie wynikowym gdzie ma być lewy górny róg kopiowanego obrazka,
int $dst_y - odległość od góry w obrazie wynikowym gdzie ma być lewy górny róg kopiowanego obrazka,
int $src_x - odległość od lewej w obrazie źródłowym kopiowanego fragmentu,
int $src_y - odległość od góry w obrazie źródłowym kopiowanego fragmentu,
int $src_w - szerokość kopiowanego fragmentu,
int $src_h - wysokość kopiowanego fragmentu.
bool
imagecopyresized ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) - kopiuje fragment ze źródłowego, ale dodatkowo skaluje go do odpowiedniego rozmiaru w pliku źródłowym.
int $dst_w - szerokość fragmentu w pliku docelowym,
int $dst_h - wysokość fragmentu w pliku docelowym
bool
imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) - kopiuje fragment ze źródłowego, ale dodatkowo skaluje go do odpowiedniego rozmiaru w pliku źródłowym.
Różnica między 2 i 3 będzie widoczna w jakości obrazka. Zwykły resize w przypadku bogatych kolorystycznie w większości spowoduje pogorszenie ich jakości. Resampling kolorów w pewien sposób tę wadę niweluje, choć nie łudź się, że poprawisz znacząco jakość. Najlepiej sam sprawdź działanie obu na jakimś zdjęciu. innymi słowy dostajesz wybór: szybki resize, albo dokładniejszy resampling.
Przykład Twojego przykładu funkcji z opisem brzmiałby:
imagecopyresampled($th, $img, 0, 0, $x1, $y1, $w, $h, $info[0], $info[1])
Z pliku źródłowego $img wyciągnij fragment zaczynający się x1 od lewej krawędzi i y1 od górnej krawędzi i mający szerokość $info[0] oraz wysokość $info[1].
Teraz weź go resampluj do szerokości $w i wysokości $h oraz umieść w obiekcie docelowym $th na pozycji 0 pikseli od lewej krawędzi i 0 pikseli od górnej krawędzi (czyli de facto w lewym górnym rogu).
Jeśli więc skopcisz parametry to logiczne, że będziesz miał cuda na obrazku
![winksmiley.jpg](http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
EDIT: A teraz zagadka... Skoro pobierasz sobie z pliku źródłowego o dajmy szerokości i wysokości 600x400 fragment, który zaczyna się w 50, 20 i ma mieć szerokość 600x400 (w końcu to rozmiary oryginału
a tak zadeklarowałeś w funkcji resamplującej!) to obraz w "schowku" ma wielkość 600x400 czy może 550x380 (600-50x400-20)
![questionmark.gif](http://forum.php.pl/style_emoticons/default/questionmark.gif)
? A
jeśli nie zmniejsza to co robi z pustym nadmiarowym "tłem" poza skopiowanym fragmentem obrazu źródłowego? A
może jednak rozmiar fragmentu jest zmniejszany do owego 550x380 i potem jest to skalowane do $w i $h. Tyle pytań... Tyle możliwości
![winksmiley.jpg](http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
A wszystko zależne od zrozumienia jak działają te parametry w funkcjach