Estoy haciendo pruebas para adaptar un código a mi página y me ha surgido un problemilla. Introduzco un archivo de imagen en el servidor y guardo la ruta en una base de datos (esta imagen pertenece a un determinado usuario), así como su thumbnail (más tarde haré que la foto original se destruya al crear dicha miniatura). En otra página muestro, a través de un div redondo el thumbnail de la imagen. El problema surge porque, las imágenes horizontales se muestran sin apenas distorsión pero, en cambio, las verticales están muy deformes. He leído que una posible solución sería hacer un crop a través de css al thumbnail, pero al intentarlo, sólo he conseguido que se modifique la forma del div o que se borre el efecto redondo de dicho div. ¿Podríais ayudarme a conseguirlo?. O si sabéis otra opción o posible solución a mi problema os lo agredecería mucho.
Código php que introduce el archivo en la bd:
Código PHP:
<?php
include("conexion.php"); $link = Conectarse ();
//comprobamos la imagen y la extension
//array de archivos disponibles
$archivos_disp_ar = array('jpg', 'jpeg', 'gif', 'png', 'tif', 'tiff', 'bmp');
//carpteta donde vamos a guardar la imagen
$carpeta = 'imagen/';
//recibimos el campo de imagen
$imagen = $_FILES['imagen']['tmp_name'];
//guardamos el nombre original de la imagen en una variable
$nombrebre_orig = $_FILES['imagen']['name'];
//el proximo codigo es para ver que extension es la imagen
$array_nombre = explode('.',$nombrebre_orig);
$cuenta_arr_nombre = count($array_nombre);
$extension = strtolower($array_nombre[--$cuenta_arr_nombre]);
//validamos la extension
if(!in_array($extension, $archivos_disp_ar))
$error = "Este tipo de archivo no es permitido"; $error_img = "error";
if(empty($error)){
//creamos nuevo nombre para que tenga nombre unico
$nombre_nuevo = time().'_'.rand(0,100).'.'.$extension;
//nombre nuevo con la carpeta
$nombre_nuevo_con_carpeta = $carpeta.$nombre_nuevo;
//por fin movemos el archivo a la carpeta de imagenes
$mover_archivos = move_uploaded_file($imagen , $nombre_nuevo_con_carpeta);
//de damos permisos 777
chmod($nombre_nuevo_con_carpeta,0777);}
// finalmente guardamos todo
//CREAR EL THUMB
$original = imagecreatefromjpeg($nombre_nuevo_con_carpeta);
/* Hallamos la anchura y altura de la imagen original */
$ancho = imagesx($original);
$alto = imagesy($original);
/* Indicamos la anchura que tendrá la miniatura // Originalmente es 100 */
$anchomini=300;
/* Obtenemos por una simple regla de tres la altura de la miniatura */
$altomini=($alto*$anchomini)/$ancho;
/*verificamos que los valores de ancho y alto no excedan nuestro limite por imagen*/
if($altomini>300){
$altomini = 300;
$anchomini = ($ancho*300)/$alto;
}
/* Dimensionamos la miniatura */
$thumb = imagecreatetruecolor($anchomini,$altomini);
/* Se obtiene por interpolación la miniatura en memoria */
imagecopyresampled($thumb,$original,0,0,0,0,$anchomini,$altomini,$ancho,$alto);
imagejpeg($thumb,"thumb/tn_$nombre_nuevo",90);
$miThumb="thumb/tn_$nombre_nuevo";
$idusuario = mysql_insert_id();
mysql_query("INSERT INTO registro(idusuario,nombre_nuevo_con_carpeta,miThumb)VALUES('{$idusuario}','{$nombre_nuevo_con_carpeta}','{$miThumb}')") or die(mysql_error());
?>
Código PHP:
<?php
// Configura los datos de tu cuenta
include("conexion.php"); $link = Conectarse ();
session_start();
$sql_fotos = mysql_query("SELECT * FROM registro WHERE idusuario = '23'");
$res_fotos = mysql_fetch_array($sql_fotos);
//realizamos la comprobacion de los datos
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<style type="text/css">
#apDiv1 {
position:absolute;
width:363px;
height:337px;
z-index:1;
left: 17px;
top: 7px;
overflow: hidden;
background-color: #0FC;
}
#muestra {
border-radius: 156px 153px 151px 151px;
-moz-border-radius:156px 153px 151px 151px;
-o-border-radius: 156px 153px 151px 151px;
-ms-border-radius: 156px 153px 151px 151px;
-khtml-border-radius: 156px 153px 151px 151px;
-webkit-border-radius: 156px 153px 151px 151px;
behavior:url(PIE.htc);
height: 279px;
width: 315px;
position: absolute;
top: 24px;
left: 36px;
}
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<div id="apDiv1">
<?php echo '<img id=muestra src="'.$res_fotos['miThumb'].'" width="300px" height="280px"></img>'; ?>
</div>
</form>
</body>
</html>