Вы должны указать ширину выходного изображения, я выбрал 1024
для демонстрации:
$srcfile = 'bg.jpg';
$outfile = 'background.jpg';
list($src_w,$src_h,$src_type) = getimagesize($srcfile);
$out_w = 1024;
$out_h = $src_h;
$src = imagecreatefromjpeg($srcfile);
$out = imagecreatetruecolor($out_w, $out_h);
$curr_x = 0;
while($curr_x < $out_w){
imagecopy($out, $src, $curr_x, 0, 0, 0, $src_w, $src_h);
$curr_x += $src_w;
}
imagejpeg($out, $outfile, 100);
imagedestroy($src);
imagedestroy($out);