El que uso para subir imagenes y crear una miniimagen es esto:
Código PHP:
Ver original<?
// ----- script para subir la imagen ---
if($_POST){
// Creamos la cadena aletoria -- la modifique para poder utilizar el nombre + aleatorio
$nom=explode(".",$_FILES [ 'file' ][ 'name' ]); //para usar nombre de la imagen
$nom2 = $nom[count($nom)-2]; //obtengo solo el nombre sin extension //$str = "1234567890";
$sub = $id_noticia;
$cad = $nom2."_".$sub;
/*for($i=0;$i<3;$i++) {
$cad .= substr($str,rand(0,9),1);
} */
// Fin de la creacion de la cadena aletoria
$tamano = $_FILES [ 'file' ][ 'size' ]; // Leemos el tamaño del fichero
$tamaño_max="300000"; // Tamaño maximo permitido
if( $tamano < $tamaño_max){ // Comprobamos el tamaño
//$destino = '../imagennov' ; // Carpeta donde se guardara
$sep=explode('image/',$_FILES['file']['type']); // Separamos image/ $tipo=$sep[1]; // Optenemos el tipo de imagen que es
if($tipo == "pjpeg"){$tipo = "jpeg";}
if($tipo == "x-png"){$tipo = "png";}
if($tipo == "gif" || $tipo == "jpeg"|| $tipo == "png"){ // Si el tipo de imagen a subir es el mismo de los permitidos, seguimos. Puedes agregar mas tipos de imagen
move_uploaded_file ( $_FILES ['file']['tmp_name'],$destino . '/' .$cad.'.'.$tipo); // Subimos el archivo
// creo la mini a tamaño de 175 ancho o menos si es más chica la img original
include('imgchiqui.php');
$imagenm= $destino . '/' .$cad.'.'.$tipo;
// obtengo el ancho para definir si se achica o no
// $dim[0] ancho - $dim[1] altura
if ($dim[0] >= 175){thumb1($imagenm, 175, $tipo);}
else{thumb1($imagenm, $dim[0], $tipo);}
}
else echo "el tipo de archivo no es de los permitidos";// Si no es el tipo permitido lo decimos
}
else echo "El archivo supera el peso permitido.";// Si supera el tamaño de permitido lo decimos
}
?>
siendo imgchiqui.php:
Código PHP:
Ver original<?
function thumb1($imagen,$ancho,$tipo) {
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande".
$dir_thumb = "minis/";
// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg",
// el thumbnail se llamaría "tn_imagen1.jpg"
$prefijo_thumb = "m_";
// Aquí tendremos el nombre de la imagen.
// Aquí la ruta especificada para buscar la imagen.
// Intentamos crear el directorio de thumbnails, si no existiera previamente.
@mkdir ($camino.$dir_thumb, 0777) or
die("No se ha podido crear el directorio ".$camino.$dir_thumb);
// Aquí comprobamos que la imagen que queremos crear no exista previamente
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) {
// echo $camino.$dir_thumb.$prefijo_thumb.$nombre." NO existía<br>\n";
// si es jpeg o jpg
if($tipo == "jpg" || $tipo == "jpeg"){
// miramos el tamaño de la imagen original...
$datos = getimagesize($camino.$nombre) or
die("Problemas con $camino$nombre<br>\n");
// intentamos escalar la imagen original a la medida que nos interesa
$ratio = ($datos[0] / $ancho);
$altura = round($datos[1] / $ratio);
// esta será la nueva imagen reescalada
// con esta función la reescalamos
// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre); }
// si del tipo png
if($tipo == "png"){
// miramos el tamaño de la imagen original...
$datos = getimagesize($camino.$nombre) or
die("Problemas con $camino$nombre<br>\n");
// intentamos escalar la imagen original a la medida que nos interesa
$ratio = ($datos[0] / $ancho);
$altura = round($datos[1] / $ratio);
// esta será la nueva imagen reescalada
// con esta función la reescalamos
// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagepng($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre); }
// si del tipo gif
if($tipo == "gif"){
// miramos el tamaño de la imagen original...
$datos = getimagesize($camino.$nombre) or
die("Problemas con $camino$nombre<br>\n");
// intentamos escalar la imagen original a la medida que nos interesa
$ratio = ($datos[0] / $ancho);
$altura = round($datos[1] / $ratio);
// esta será la nueva imagen reescalada
// con esta función la reescalamos
// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagegif($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre); }
}
}
?>
Lo único que debo tener presente es el peso del archivo original, ya que si es muy grande tarda mucho, o directamente se bloquea. por eso siempre se deben subir con el tamaño final a mostrar.
saludos