Vereis cuando inserto una imagen en mi base de datos y hay mucha diferencia entre el ancho y el alto(digamos 180px por 30px) cuando se muestra con el codigo que tengo de escalado se come parte de la imagen en los laterales.
La ruta se almaccena en un varchar(255) y el archivo en una carpeta.
El codigo de escalado:
Código PHP:
<?php
function sube_foto($temporal, $d_ancho, $d_alto, $nombre, $extension){
switch($extension){
case '.gif' :
$image = imagecreatefromgif($temporal);
break;
case '.png' :
$image = imagecreatefrompng($temporal);
break;
case '.jpg' :
$image = imagecreatefromjpeg($temporal);
break;
}
// Nuevas dimensiones
list($org_ancho, $org_alto) = getimagesize($temporal);
if($d_ancho/$d_alto > $org_ancho/$org_alto){
$nuevo_ancho = $d_ancho;
$nuevo_alto = $org_alto * ($d_ancho / $org_ancho);
}else{
$nuevo_ancho = $org_ancho * ($d_alto / $org_alto);
$nuevo_alto = $d_alto;
}
// Redimension
$image_p = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$image_f = imagecreatetruecolor($d_ancho, $d_alto);
imagecopyresized($image_p, $image, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $org_ancho, $org_alto);
// Adjuste posicion
$x = ($nuevo_ancho - $d_ancho) / 2;
$y = ($nuevo_alto - $d_alto) / 2;
//Thumb
imagecopyresampled($image_f, $image_p, 0, 0, $x, $y, $d_ancho, $d_alto, $d_ancho, $d_alto);
imagejpeg($image_f, $nombre, 100);
chmod($nombre, 0777);
return true;
}
?>
Código HTML:
<form action="<? echo $PHP_SELF;?>" method="post" enctype="multipart/form-data"> <p class="Estilo1">Insertar publicidad </p> <p> <input type="file" name="archivo" id="archivo" /> <span class="Estilo1">(formato .gif o .jpg)</span></p> <p> <input type="submit" name="submit" value="Subir imagen" /> </p> </form>
Código PHP:
<?php
include('crop_imagen.php');
$extension=NULL;
switch($HTTP_POST_FILES['archivo']['type']){
case 'image/gif': $extension='.gif'; break;
case 'image/jpeg': $extension='.jpg'; break;
case 'image/jpg': $extension='.jpg'; break;
case 'image/pjpeg': $extension='.jpg'; break;
case 'image/png': $extension='.png'; break;
}
$fecha=time();
$nombre=date("dmYHis",$fecha).$extension;
$ruta_srv='../publicidad/';
$temporal=sprintf($ruta_srv."tmp/".$nombre); // ruta temporal
if(move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'],$temporal)){ // subida al servidor
sube_foto($temporal, 130, 80, $ruta_srv.$nombre, $extension);
@unlink($temporal); // eliminar la foto temporal
$dbh=mysql_connect ("ip", "user", "pass") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("BD");
$sql = "Insert Into colaboradores (imagen) Values ('$nombre')";
$result=mysql_query($sql);
}else{
echo "selecciona el archivo de imagen con extensión'.jpg' o '.gif'";
}
?>