tengo una pagina en que los usuarios pueden subir imagenes pero como pueden subir imagenes de cualquier dimension genera problemas si la proporcion entre alto y ancho no es la adecuada. para eso me he creado este pequeño script basandome an un par de tutoriales encontre:
Código PHP:
function crear_thumb($img, $tname){
// Obtencion de formatos de imagen
if(stristr(strtolower($img),"jpg") or stristr(strtolower($img),"jpeg")){
$img = imagecreatefromjpeg($img);
$tipo = "jpg";
}
if(stristr(strtolower($img),"png")){
$img = imagecreatefrompng($img);
$tipo = "png";
}
if(stristr(strtolower($img),"gif")){
$img = imagecreatefromgif($img);
$tipo = "gif";
}
// Obtenemos ancho y alto de la imagen
$ancho = imagesx($img);
$alto = imagesy($img);
if(($ancho/$alto <= 1.20) && ($alto/$ancho <=0.84)){
$n_alto = 202;
$redu = ($n_alto * 100) / $alto;
$n_ancho = round($ancho * $redu / 100);
$thumb = imagecreatetruecolor($n_ancho,$n_alto);
imagecopyresized($thumb,$img,0,0,0,0,$n_ancho,$n_alto,$ancho,$alto);
}else{
$thumb = imagecreatetruecolor(244, 204);
imagecopyresized($thumb, $img, 0, 0, abs(($ancho - 244) / 2), abs(($alto - 204) / 2), 244, 204, 244, 204);
return array(244, 204);
}
switch($tipo){
case "jpg":
imagejpeg($thumb, $tname);
case "png":
imagepng($thumb, $tname);
case "gif":
imagegif($thumb, $tname);
}
imagedestroy($thumb);
return array($n_ancho, $n_alto);
}
Código PHP:
if(($ancho/$alto <= 1.20) && ($alto/$ancho <=0.84)){
$n_alto = 202;
$redu = ($n_alto * 100) / $alto;
$n_ancho = round($ancho * $redu / 100);
$thumb = imagecreatetruecolor($n_ancho,$n_alto);
imagecopyresized($thumb,$img,0,0,0,0,$n_ancho,$n_alto,$ancho,$alto);
}else{
$thumb = imagecreatetruecolor(244, 204);
imagecopyresized($thumb, $img, 0, 0, abs(($ancho - 244) / 2), abs(($alto - 204) / 2), 244, 204, 244, 204);
return array(244, 204);
}