Estas usando funciones compatibles con GD 1.x .. (no soporta mas de 256 colores esa versión y por eso ves esa perdida de calidad y efecto "paint" en tus imagenes).
Debes usar funciones tipo:
ImageCreateTrueColor()
justo (en tu código) despues de crear tu imagen desde el archivo (jpg).
Sería algo así (no lo he probado .. en tal caso no está de más pasarse por:
www.php.net/gd para ver el esas funciones).
Código PHP:
// etc código que ya usas ...
$imagen="imagenes/bta1.jpg"
$im_original = ImageCreateFromJPEG($imagen);
$ancho=imagesx($im_original);
$alto=imagesy($im_original);
$im = ImageCreateTrueColor($ancho,$alto);
ImageCopyResampled($im,$im_original,0,0,0,0,$ancho,
$alto,$ancho,$alto);
// resto de tu código
Un saludo,