Foros del Web » Programando para Internet » PHP »

enviar no 1 si no 3 imagenes.

Estas en el tema de enviar no 1 si no 3 imagenes. en el foro de PHP en Foros del Web. hola que tal, tengo un codigo php que lo que hace es redimencionar una imagen ... con el cual primero obtengo los datos de la ...
  #1 (permalink)  
Antiguo 18/11/2009, 18:40
Avatar de mauro770  
Fecha de Ingreso: mayo-2009
Mensajes: 109
Antigüedad: 15 años
Puntos: 1
De acuerdo enviar no 1 si no 3 imagenes.

hola que tal, tengo un codigo php que lo que hace es redimencionar una imagen ...
con el cual primero obtengo los datos de la imagen , luego hago las verificaciones la guardo en una carpeta temp para luego modifcarla y terminar por guardarla en una carpeta llamada miniatura .
Me gustaria saber si alguien tiene alguna idea de adaptar el codigo para que pueda en vesde guardar una imagen guardar 3, es decir tener 3 campos files y al final tener 3 imagenes distisntas guardadas.
este es el codigo:
Código PHP:
<?php    
$dirbase 
'Directorio interno/';
     
// MOD Minenage
         
if ($HTTP_POST_FILES['MINIATURA']['name'] != '') {
            
$nombre_archivo $HTTP_POST_FILES['MINIATURA']['name'];
            
$tipo_archivo $HTTP_POST_FILES['MINIATURA']['type'];
            
$tamano_archivo $HTTP_POST_FILES['MINIATURA']['size'];
            
$archivo pathinfo($nombre_archivo);
            
$archivo $archivo['filename'];
            
//compruebo si las características del archivo son las que deseo
            
$url_mini_no_valida '';
            
$sw '';
            if (
strpos($tipo_archivo"jpg")) $sw $tipo_archivo;
            if (
strpos($tipo_archivo"jpG")) $sw $tipo_archivo;
            if (
strpos($tipo_archivo"jpeg")) $sw $tipo_archivo;
            if (
strpos($tipo_archivo"png")) $sw $tipo_archivo;
            if (
strpos($tipo_archivo"gif")) $sw $tipo_archivo;
            if (
$sw == '') {
               
$msj 'Extensión de archivo no válida: '.$tipo_archivo;
               echo 
'<script> alert("Tipo de archivo no soportado: '.$msj.'"); </script>';         
               
$tpl->assign($data);
               
//$tpl->assign('ruta_miniatura', 'http://localhost/phpld22/miniaturas/');
               
$content $tpl->fetch('admin/dir_links_edit.tpl');
               
$tpl->assign('content'$content);
               
//Clean whitespace
               
$tpl->load_filter('output''trimwhitespace');
               
//Make output
               
echo $tpl->fetch('admin/main.tpl');   
               die();
            } else {
               if (
move_uploaded_file($HTTP_POST_FILES['MINIATURA']['tmp_name'], $dirbase.'temp/'.$nombre_archivo)) {
                  if (
file_exists($dirbase.'miniaturas/_'.$archivo.'.jpg')) {
                     if (!
unlink($dirbase.'miniaturas/_'.$archivo.'.jpg')) {
                        echo 
"fallo al borrar miniatura anterior";
                        die();
                     }
                  }
                  
$rere getimagesize($dirbase.'temp/'.$nombre_archivo);
                  
escalar($dirbase.'temp/'.$nombre_archivo300300);
                  if (!
unlink($dirbase.'temp/'.$nombre_archivo)) {
                     echo 
"fallo al borrar imagen original temporal";
                     
$error 'problema en !unlink<br/>';
                     die();
                  }
                  
rename ($dirbase.'temp/_'.$archivo.'.jpg'$dirbase.'miniaturas/_'.$archivo.'.jpg');
                  
$data['MINIATURA'] = '_'.$archivo.'.jpg';
               } else {
                  echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse.";
               }
            }
         }   
         
// FIN MOD Minenage ?>
<?php 
// NOD Minenage

function escalar($imagen,$ancho,$altura) {
   
$prefijo_thumb "_";
   
$camino_nombre=explode("/",$imagen);
   
$nombre=end($camino_nombre);
   
$camino=substr($imagen,0,strlen($imagen)-strlen($nombre));
   
$archivo pathinfo($imagen);
   
$extension $archivo['extension'];
   
$nombre_archivo $archivo['filename'];
   
   if (!
file_exists($camino.$prefijo_thumb.$nombre)) {
      if ((
$extension == 'jpeg') || ($extension == 'jpg')) {
         
$img = @imagecreatefromjpeg($camino.$nombre);
      } elseif (
$extension == 'png') {
         
$img = @imagecreatefrompng($camino.$nombre);
      } elseif (
$extension == 'gif') {
         
$img = @imagecreatefromgif($camino.$nombre);
      }
       if (!
$img) { /* Comprobar si ha fallado */
      
         
$img = @imagecreatefromjpeg("temp/gatito.jpg");   
         
$datos getimagesize("temp/gatito.jpg") or die("Problemas con $camino$nombre<br>");
         
$anchura $ancho;
         
$thumb imagecreatetruecolor($anchura,$altura);
         
imagecopyresampled ($thumb$img0000$anchura$altura$datos[0], $datos[1]); // calidad
         //imagecopyresized ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]); // rapidez
         
imagejpeg($thumb,$camino.$prefijo_thumb.$nombre);
         
       } else {   
         
$datos getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>");
         
$ratio = ($datos[0] / $ancho);
         
$ancho_final 300;
         
$alto_final 230;
         
$escalada imagecreatetruecolor($ancho_final,$alto_final);
         
imagecopyresized($escalada$img0000$ancho_final$alto_final$datos[0], $datos[1]); // calidad
         //imagecopyresized ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]); // rapidez
         
         
         
$thumb imagecreatetruecolor($ancho_final,$alto_final);
         
imagecopyresized ($thumb$escalada0000$ancho$altura$ancho_final$altura); // calidad
         
$ruta_marca 'marca_de_agua.png';
         
$watermark imagecreatefrompng($ruta_marca);
         
imagecopymerge($thumb$watermark15000,15$ancho_final30);
     
$_POST['asd'] = 'http://www.minicio.com.ar/miniaturas/'.$prefijo_thumb.$nombre_archivo.'.jpg';
         
imagejpeg($thumb,$camino.$prefijo_thumb.$nombre_archivo.'.jpg');
      }
   }
}
// FIN MOD Minenage ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php if(isset($_POST)){ echo $rere[0].'<br/>'.$rere[1];} ?>
        
<form id="form1" name="form1" enctype="multipart/form-data" method="post" action="">
  <label>
  <input type="file" name="MINIATURA" id="MINIATURA" />
  </label>
  <p>
    <label>
    <input type="submit" name="enviar" id="enviar" value="Enviar" />
    </label>
  Porfavor para realizar la primera prueba descarga la &quot;Imagen Original&quot;.</p>
</form>
<table width="675" height="312" border="1">
  <tr>
    <td width="329" height="33">Imagen Original: medias 300 x 300</td>
    <td width="330">Imagen Dimencionada: medias 310 x 250</td>
  </tr>
  <tr>
    <td height="228"><img src="http://www.minicio.com.ar/prueba.jpg" /></td>
    <td><img src="<?php echo $_POST['asd']; ?>"/></td>
   
  </tr>
</table>
</body>
</html>
alguien sabe como puedo empesar ? :/
  #2 (permalink)  
Antiguo 18/11/2009, 18:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: enviar no 1 si no 3 imagenes.

pues debes cambiar muchas cosas...

- $HTTP_POST_FILES es obsoleto, debes usar $_FILES
- el name de los tres input debe ser del tipo array(), y debe ser el mismo, ej. name="archivo[]"
- cuando recibes el POST debes tratar a esta variable como un arreglo, si no sabes como lo veo difícil...

ahora, el algoritmo se debe ejecutar dentro del ciclo (no todo, solo lo necesario) y es exactamente igual a que si fuera una, dos o mas imágenes...

suerte!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/11/2009, 19:10
Avatar de mauro770  
Fecha de Ingreso: mayo-2009
Mensajes: 109
Antigüedad: 15 años
Puntos: 1
Respuesta: enviar no 1 si no 3 imagenes.

mmmm voy a intentar averriguar como trabajarlo como un array , me podrias recomendar por donde empesar ?
gracias por la respuesta
  #4 (permalink)  
Antiguo 18/11/2009, 19:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: enviar no 1 si no 3 imagenes.

claro, intenta un ejemplo básico primero... un upload de varios archivos, y una ves dominado... bingo!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 00:27.