Foros del Web » Programando para Internet » PHP »

Consulta

Estas en el tema de Consulta en el foro de PHP en Foros del Web. Estimados aqui en este foro encontré un tutorial para subir imágenes y crear miniaturas que me sirvió mucho. Tengo dos preguntas: me gustaría saber como ...
  #1 (permalink)  
Antiguo 12/08/2013, 21:19
 
Fecha de Ingreso: agosto-2013
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
Consulta

Estimados aqui en este foro encontré un tutorial para subir imágenes y crear miniaturas que me sirvió mucho. Tengo dos preguntas: me gustaría saber como definir el tamaño de la imagen grande y no de la miniatura que esta explicado. y como validar el campo archivos[], cuando este vacío.

El post del que me refiero es este: http://www.forosdelweb.com/f18/aporte-cargar-varias-imagenes-bd-generar-thumbnail-miniatura-845770/#post4484654
  #2 (permalink)  
Antiguo 13/08/2013, 02:58
Avatar de angelAparicio  
Fecha de Ingreso: julio-2009
Ubicación: Sevilla
Mensajes: 307
Antigüedad: 14 años, 9 meses
Puntos: 22
Respuesta: Consulta

Hola, el campo archivos lo puedes validas con la línea $tot = count($_FILES["archivos"]["name"]);. Si $tot es igual a cero, es que archivos está vacío.

¿A que te refieres con definir el tamaño de la imagen grande? ¿A poner un límite de subida, mostrar después la imagen o redimensionar la imagen? En principio la imagen grande la sube el usuario.
__________________
Mis webs:
- Programador Web Autónomo
- Conciertos en Sevilla
  #3 (permalink)  
Antiguo 14/08/2013, 00:06
 
Fecha de Ingreso: agosto-2013
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Consulta

Muchas gracias por tu respuesta. Probe con


if (!isset($_FILES["archivos"]))
echo'<script>alert("Por favor cargue una imagen");history.back()</script>';


y tambien con


if ($tot =='')
echo'<script>alert("Por favor cargue una imagen");history.back()</script>';


pero no me da siempre este mensaje cuando no selecciono ninguna imagen:

"Query was empty"

Al parecer los corchetes al lado del input file (archivos[] ) es donde estaria el problema para validarlo.

Con respecto al tema de la imagen me gustaria que al subir la imagen asignarle un tamaño definido ya, (800px) por ejemplo . ya que actualmente las cámaras están sacando en resoluciones muy altas y generalmente el usuario que le toca cargar desconoce como achicar las imagenes.
  #4 (permalink)  
Antiguo 14/08/2013, 09:13
Avatar de angelAparicio  
Fecha de Ingreso: julio-2009
Ubicación: Sevilla
Mensajes: 307
Antigüedad: 14 años, 9 meses
Puntos: 22
Respuesta: Consulta

Lo primero te falla porque cuando no hay fichero el array $_FILES["archivos"] existe, pero está vacío. La mejor manera de comprobar es que no te llega con errores:

Código PHP:
Ver original
  1. if ( $_FILES["archivos"]["error"] == 0 )
  2. echo'<script>alert("Por favor cargue una imagen");history.back()</script>';

Si quieres saber que significa cada código de error puedes mirarlo aquí: http://www.php.net/manual/es/feature...oad.errors.php .

Para cambiar el tamaño de la imagen tienes que usar la función imagecopyresampled. Aquí tienes un par de ejemplos:
http://php.net/manual/es/function.im...yresampled.php
http://casamadrugada.net/tutoriales/...y-libreria-gd/
__________________
Mis webs:
- Programador Web Autónomo
- Conciertos en Sevilla
  #5 (permalink)  
Antiguo 17/08/2013, 07:19
 
Fecha de Ingreso: agosto-2013
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Consulta

Por lo que veo mis conocimientos son muy básicos Muchas gracias por la información esta muy buena, pero la verdad no logro reescalar la imagen grande también.
Te paso el código completo a ver si lo puedes modificar por mi, lo que busco es que ademas de generarme la miniatura, me achique a 750px la imagen original tambien. Espero que puedas ayudarme. Abrazos

<?php
include_once('../conex.php');

function redimensionar_jpeg($img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad)
{
$img = imagecreatefromJPEG($img_original);
//esta secccion achica la imagen proporcionalmente//
$width = imagesx($img);
$height = imagesy($img);
$img_nueva_anchura = 310;
$img_nueva_altura = ($img_nueva_anchura*$height)/$width;//termina tamaño proporcional
$thumb = imagecreatetruecolor($img_nueva_anchura,$img_nueva _altura);
imagecopyresampled($thumb,$img,0,0,0,0,$img_nueva_ anchura,$img_nueva_altura,ImageSX($img),ImageSY($i mg));
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
ImageDestroy($img);
}

//Preguntamos si nuetro arreglo 'archivos' fue definido
if (isset($_FILES["archivos"])) {
//de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
//obtenemos la cantidad de elementos que tiene el arreglo archivos
$tot = count($_FILES["archivos"]["name"]);

//este for recorre el arreglo
for ($i = 0; $i < $tot; $i++){

if(is_uploaded_file($_FILES["archivos"]["tmp_name"][$i])){
//con el indice $i, podremos obtener la propiedad que desemos de cada archivo
//para trabajar con este como si fuera un array continuo
$tmp_name = $_FILES["archivos"]["tmp_name"][$i];
$name = $_FILES["archivos"]["name"][$i];
$tamano = $_FILES["archivos"]["size"][$i];
$tipo = $_FILES["archivos"]["type"][$i];
$prefijo = substr(md5(uniqid(rand())),0,9);


if (!((strpos($tipo, "gif") || strpos($tipo, "png") || strpos($tipo, "jpeg")) && ($tamano < 50000000000))) {
echo '<div style="width:500px; height:80px; padding:10px; background-color:#FF0000;">';
echo '<p style="font-size:15px; color:#FFF;"><strong>ERROR DE FORMATO O TAMAÑO</strong></p></div>';
}else{
/* Guardar el archivo */
$destino="../../subidas/";// carpeta del server donde se guardara
//creamos una carpeta llamada thumb dentro de $destino si es que no existiera
$dir_thumb = "thumbs/";
if (!file_exists($destino.$dir_thumb)){
@mkdir ($destino.$dir_thumb, 0777)
or die("No se ha podido crear el directorio ".$destino.$dir_thumb);
}
$destTHU= $destino.$dir_thumb;


//agregado: pregunto si existe antes de moverla foto!
if(move_uploaded_file($_FILES["archivos"]["tmp_name"][$i],$destino.$prefijo."_".$name)){
redimensionar_jpeg($destino.$prefijo."_".$name, $destTHU.$prefijo."_".$name, $thumb,null,90); // si se desea valores fijos se escribe ancho, alto y calidad

//inserto los textos en la base de datos

$sql = "INSERT INTO imagenes (imagenes_grande, imagenes_mini)
VALUES ('".$prefijo."_".$name."', '".$prefijo."_".$name."')";


}//if move_uploaded_file

}//else

}//if is_uploaded_file


//cierro mi consulta $sql
mysql_query($sql,$conexion) or die(mysql_error($conexion));
}//for


} //if

if (mysql_affected_rows($conexion)){
echo "<script language='javascript'> alert ('Imagen cargada con Éxito!!');location.href='../subir_imagenes.php'</script>";
}else{
echo "<script language='javascript'> alert ('Error al ingresar la imagen')</script>";
}
?>

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:38.