El problema que veo que me sale una ralla negra dentro del thumbnails.
Os paso el script a ver si alguien me puede ayudar.
Código PHP:
<?
# Variables para la class
# **********************************************************
$ruta_original = "imagenes/";
$ruta_thumnbails = "imagenes/comp/";
$width_original = 200;
$height_original = 200;
$quality = 90;
$background = "255,255,255";
$name_original = "4242006180812.jpg";
$name_thumnbails = "4242006180812.jpg";
$file = $ruta_original.$name_original;
$savePath = $ruta_original.$ruta_thumnbails;
# Obtenemos la informacion de la imagen, el array info tendra los siguientes indices:
# [0] ancho de la imagen
# [1] alto de la imagen
# **********************************************************
$info = getimagesize($file);
# Extensión del archivos
# **********************************************************
$extension = explode(".",$name_original);
$ext = count($extension)-1;
# COMPRIMIR JPG
# **********************************************************
if(strcasecmp($extension[$ext],"jpg") == 0 || strcasecmp($extension[$ext],"jpeg") == 0)
$image = @imagecreatefromjpeg($file);
elseif(strcasecmp($extension[$ext],"png") == 0)
$image = @imagecreatefrompng($file);
elseif(strcasecmp($extension[$ext],"gif") == 0)
$image = @imagecreatefromgif($file);
if($info[0] == $info[1])
{
$xpos = 0;
$ypos = 0;
$width = $info[1];
$height = $info[1];
}else{
if($info[0] < $info[1])
{
//imagen horizontal
$xpos = ceil(($info[0] - $info[1]) /2);
$ypos = 0;
$width = $info[1];
$height = $info[1];
}else{
//imagen vertical
$xpos = 0;
$ypos = ceil(($info[1] - $info[0]) /2);
$width = $info[0];
$height = $info[0];
}
}
# Creamos una nueva imagen cuadrada con las dimensiones que queremos:
# **********************************************************
$image_new = @imagecreatetruecolor($width_original, $height_original);
# bgcolor
# **********************************************************
$bgcolor = imagecolorallocate($image_new, $background);
#
# **********************************************************
imagecopyresampled($image_new, $image, 0, 0, $xpos, $ypos, $width_original, $height_original, $width, $height);
# Relleno de color
# **********************************************************
imagefill($image_new, 0, 0, $bgcolor);
imagefill($image_new, ($width_original-1), 0, $bgcolor);
imagefill($image_new, 0, ($width_original-1), $bgcolor);
# Guardamos la nueva imagen como jpg con una quality del 85%
# **********************************************************
if(strcasecmp($extension[$ext],"jpg") == 0 || strcasecmp($extension[$ext],"jpeg") == 0)
{
if ($exito = @imagejpeg($image_new, $ruta_thumnbails.$name_thumnbails, $quality))
{
@imagedestroy($image_new);
return true;
}
}
elseif(strcasecmp($extension[$ext],"png") == 0)
{
if ($exito = @imagepng($image_new, $ruta_thumnbails.$name_thumnbails, ($quality/10)))
{
@imagedestroy($image_new);
return true;
}
}
elseif(strcasecmp($extension[$ext],"gif") == 0)
{
if ($exito = @imagegif($image_new, $ruta_thumnbails.$name_thumnbails, $quality))
{
@imagedestroy($image_new);
return true;
}
}
elseif(strcasecmp($extension[$ext],"bmp") == 0)
{
@copy ($file, $ruta_thumnbails.$name_thumnbails);
return true;
}
?>