mmmmmm, yo uso esta función... que hace lo siguiente:
- sube la imagen
- crea una miniatura cuadrada de 100 x 100 pixels (puedes modificar estop)
- y crea una miniatura a escala como maximo de 320 pixel (puedes modificar estop)
ahi la función
Código PHP:
function fn_subir_ima_min_cua_nor_2($nom_bas, $dir_ima, $dir, $max, $max_cua){
// fn_subir_ima_min_cua_nor('nombre_imagen', '../origen/a.jpg', '../../destino/', 300=maximo_miniatura, 100=tamaño cuadrado);
$nom_ima = $nom_bas.".jpg";
$nom_ima_min = $nom_bas."_min.jpg";
$nom_ima_cua = $nom_bas."_cua.jpg";
$des = $dir.$nom_ima;
copy($dir_ima, $des);
//generar imagen miniatura
$ori = imagecreatefromjpeg($dir.$nom_ima);
$ancho = imagesx($ori);
$alto = imagesy($ori);
if ($ancho> $alto){
$min_ancho = $max;
$min_alto = ($alto * $max) / $ancho;
}else{
$min_alto = $max;
$min_ancho = ($ancho * $max) / $alto;
}
$thumb = imagecreatetruecolor($min_ancho, $min_alto);
imagecopyresampled($thumb,$ori,0,0,0,0,$min_ancho,$min_alto,$ancho,$alto);
imagejpeg($thumb,$dir.$nom_ima_min,90); // 80 es la calidad de compresión
//generar imagen cuadrada
$mover_ancho = 0;
$mover_alto = 0;
if ($ancho> $alto){
$min_ancho = $max_cua;
$min_alto = ($alto * $max_cua) / $ancho;
$mover_ancho = 0;
/*
$min_alto = $max_cua;
$min_ancho = ($ancho * $max_cua) / $alto;
$mover_ancho = (($min_ancho - $max_cua)/2)*(-1);
*/
}else{
/*
$min_ancho = $max_cua;
$min_alto = ($alto * $max_cua) / $ancho;
$mover_alto = (($min_alto - $max_cua)/2)*(-1);
*/
$min_ancho = $max_cua;
$min_alto = ($alto * $max_cua) / $ancho;
$mover_alto = 0;
}
$thumb = imagecreatetruecolor($min_ancho, $min_alto);
imagecopyresampled($thumb,$ori,$mover_ancho,$mover_alto,0,0,$min_ancho,$min_alto,$ancho, $alto);
imagejpeg($thumb,$dir.$nom_ima_cua,96); // 80 es la calidad de compresión
}
la usas de este modo:
Código PHP:
fn_subir_ima_min_cua_nor('nombre_imagen', '../origen/a.jpg', '../../destino/', 300=maximo_miniatura, 100=tamaño cuadrado);
las imagenes las sube en estos formatos:
normal,
miniatura y
cuadrada