Дело в том, что это, по моему очень древний баг, который тянется со времен ЛДУ, я вроде бы, даже исправление предлагал. У меня, на сайте все прекрасно работает, так, как и заявлено в теме: Вот эта функция, что я делал уже не помню:
function ldu_createthumb($img_big, $img_small, $small_x, $small_y, $keepratio, $extension, $filen, $fsize, $textcolor, $textsize, $bgcolor, $bordersize, $jpegquality)
        {
        global $cfg;
        if ($extension=='png')
                { $source = imagecreatefrompng($img_big); }
        else
                { $source = imagecreatefromjpeg($img_big); }
        $big_x = imagesx($source);
        $big_y = imagesy($source);
        if (!$keepratio)
                {
                $thumb_x = $small_x;
                $thumb_y = $small_y;
                }
        elseif ($big_x == $big_y)
                {
                $thumb_x = $small_x;
                $thumb_y = $small_y;
                }
        elseif ($big_x > $big_y)
                {
                $thumb_x = $small_x;
                $thumb_y = floor($big_y * ($small_x / $big_x));
                }
        elseif ($big_x < $big_y)
                {
                $thumb_x = floor($big_x * ($small_y / $big_y))+4;
                $thumb_y = $small_y;
                }
        if ($textsize==0)
                {
                if ($cfg['th_amode']=='GD1')
                        { $new = imagecreate($thumb_x+$bordersize*2, $thumb_y+$bordersize*2); }
                else
                        { $new = imagecreatetruecolor($thumb_x+$bordersize*2, $thumb_y+$bordersize*2); }
                $background_color = imagecolorallocate ($new, $bgcolor[0], $bgcolor[1] ,$bgcolor[2]);
                imagerectangle ($new, 0,0, $thumb_x+$bordersize*2, $thumb_y+$bordersize*2, $background_color);
                if ($cfg['th_amode']=='GD1')
                        { imagecopyresized($new, $source, $bordersize, $bordersize, 0, 0, $thumb_x, $thumb_y, $big_x, $big_y); }
                else
                        { imagecopyresampled($new, $source, $bordersize, $bordersize, 0, 0, $thumb_x, $thumb_y, $big_x, $big_y); }
                }
   else
                {
                if ($cfg['th_amode']=='GD1')
                        { $new = imagecreate($thumb_x+$bordersize*2, $thumb_y+$bordersize*2+$textsize*3.5+6); }
                else
                        { $new = imagecreatetruecolor($thumb_x+$bordersize*2, $thumb_y+$bordersize*2+$textsize*3.5+7); }
                $background_color = imagecolorallocate ($new, $bgcolor[0], $bgcolor[1] ,$bgcolor[2]);
                imagerectangle ($new, 0,0, $thumb_x+$bordersize*2-1, $thumb_y+$bordersize*2+$textsize*3.5+6, $background_color);
                $text_color = imagecolorallocate ($new, $textcolor[0],$textcolor[1],$textcolor[2]);
                if ($cfg['th_amode']=='GD1')
                        { imagecopyresized($new, $source, $bordersize, $bordersize, 0, 0, $thumb_x, $thumb_y, $big_x, $big_y); }
                else
                        {
                        imagecopyresampled($new, $source, $bordersize, $bordersize, 0, 0, $thumb_x, $thumb_y, $big_x, $big_y);
                        }
//                imagestring ($new, $textsize, $bordersize, $thumb_y+$bordersize+2, $filen, $text_color);
                         imagestring ($new, $textsize, $bordersize+1, $thumb_y+$bordersize+$textsize, " ".$big_x."x".$big_y." ".$fsize."kb", $text_color);
                        }
        if ($extension=='png')
                { imagepng($new, $img_small);  }
        else
                { imagejpeg($new, $img_small, $jpegquality); }
        imagedestroy($new);
        imagedestroy($source);
        return;
        }
   Там, же, я предлагал настоящую панораму, с геометрическими искажениями и вращением панорамы, я, использовал функцию из 
http://www.pixaround.com/  - но оказалось не актуально
 
						www.cotonti.mobi