Todo sale perfecto, excepto que el recorte me lo hace siempre desde el borde superior izquierdo (como indica el manual del imagecopyresampled). Pero esto hace que no se recorte desde el centro, que es lo que quiero, me recorta o de arriba o del lado izquierdo y yo quiero que lo haga la mitad de arriba, la otra mitad de abajo, la mitad de la izquierda y la otra mitad de la derecha.
Pongo el código a ver si alguien me hecha una mano. Gracias!
Código PHP:
<?
session_name("loginUsuario");
session_start();
$usuario=$_SESSION["usuario"];
function thumbjpeg($imagen,$directorio,$ancho_tn,$alto_tn,$ancho_orig,$alto_orig,$crop_width,$crop_height) //ancho_tn y alto_tn son el tamaño ke deseo para el thumbnail
{
$dir_thumb=$directorio; //ruta donde guardamos los thumbnails
$prefijo_thumb="tn_"; //prefijo para el thumbnail
$camino_nombre=explode("/",$imagen); //por si imagen lleva una / delante
$nombre=end($camino_nombre);// Aquí tendremos el nombre de la imagen.
$anchura=$ancho_tn; //le doy el ancho ke pasé
$altura=$alto_tn; //le doy el alto
$anchura_orig=$ancho_orig;
$altura_orig=$alto_orig;
$cropw=$crop_width;
$croph=$crop_height;
if (!file_exists($dir_thumb.$prefijo_thumb.$nombre)) //si no existe el thumbnail
{
$format = strtolower(substr(strrchr($nombre,"."),1));
switch($format)
{
case 'gif' :
$type ="gif";
$img = imagecreatefromgif($dir_thumb.$nombre);
break;
case 'png' :
$type ="png";
$img = imagecreatefrompng($dir_thumb.$nombre);
break;
case 'jpg' :
$type ="jpg";
$img = imagecreatefromjpeg($dir_thumb.$nombre);
break;
case 'jpeg' :
$type ="jpg";
$img = imagecreatefromjpeg($dir_thumb.$nombre);
break;
default :
die ("ERROR; UNSUPPORTED IMAGE TYPE");
break;
}
$thumb = imagecreatetruecolor($anchura,$altura);
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $anchura_orig, $altura_orig); //crea el thumbnail
if($type=="gif"){
imagegif($thumb,$dir_thumb.$prefijo_thumb.$nombre);
}elseif($type=="jpg"){
imagejpeg($thumb,$dir_thumb.$prefijo_thumb.$nombre,100);
}elseif($type=="png"){
imagepng($thumb,$dir_thumb.$prefijo_thumb.$nombre);
}elseif($type=="bmp"){
imagewbmp($thumb,$dir_thumb.$prefijo_thumb.$nombre);
}
//imagejpeg($thumb,$dir_thumb.$prefijo_thumb.$nombre);
switch($format)
{
case 'gif' :
$type ="gif";
$img = imagecreatefromgif($dir_thumb.$prefijo_thumb.$nombre);
break;
case 'png' :
$type ="png";
$img = imagecreatefrompng($dir_thumb.$prefijo_thumb.$nombre);
break;
case 'jpg' :
$type ="jpg";
$img = imagecreatefromjpeg($dir_thumb.$prefijo_thumb.$nombre);
break;
case 'jpeg' :
$type ="jpg";
$img = imagecreatefromjpeg($dir_thumb.$prefijo_thumb.$nombre);
break;
default :
die ("ERROR; UNSUPPORTED IMAGE TYPE");
break;
}
$thumb = imagecreatetruecolor(156,215);
imagecopyresampled ($thumb, $img, 0, 0, $cropw, $croph, 156, 215, 156, 215); //crea el thumbnail
// la salvamos con el nombre y en el lugar que nos interesa.
if($type=="gif"){
imagegif($thumb,$dir_thumb.$prefijo_thumb.$nombre);
}elseif($type=="jpg"){
imagejpeg($thumb,$dir_thumb.$prefijo_thumb.$nombre,100);
}elseif($type=="png"){
imagepng($thumb,$dir_thumb.$prefijo_thumb.$nombre);
}elseif($type=="bmp"){
imagewbmp($thumb,$dir_thumb.$prefijo_thumb.$nombre);
}
return($prefijo_thumb.$nombre);
}
}
$directorio_foto = 'C:/xampp/htdocs/nombres/fotos/';
$nombre = strtr($_FILES['foto']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù ", "n-AEIOUAEIOUaeiouaeiouaeiou_");
$tamanio = $_FILES['foto']['size'];
$tipo = $_FILES['foto']['type'];
global $HTTP_POST_VARS;
copy($_FILES['foto']['tmp_name'],$directorio_foto.$nombre);
$nombre2=$directorio_foto.$nombre;
$my_image = array_values(getimagesize($nombre2));
list($width, $height, $type, $attr) = $my_image;
$llindar1 = (215 * $width) / 156;
$llindar2 = (156 * $height) / 215;
$crop1=($height-$llindar1) *156 / $width;
$crop2=($width-$llindar2) * 215 / $height;
$ratio=$width / $height;
if($ratio<=0.725581){
$alto_nuevo=$height * 156 /$width;
$nombre3 = thumbjpeg($nombre,$directorio_foto,156,$alto_nuevo,$width,$height,0,$crop1);
}else{
$ancho_nuevo=$width * 215 / $height;
$nombre3 = thumbjpeg($nombre,$directorio_foto,$ancho_nuevo,215,$width,$height,$crop2,0);
}
unlink($directorio_foto.$nombre);
$ar = "./fotos/".$nombre3; //aqui la url donde se sube la foto
$conn = mysql_connect("localhost","root","");
mysql_select_db("nombres",$conn);
$sql = "INSERT INTO fotos (id, foto, nombre) VALUES ('','$ar','$usuario')";
$result = mysql_query( $sql, $conn) ;
header("Location: usuarios.php");
?>