Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/11/2009, 14:13
Avatar de mauro770
mauro770
 
Fecha de Ingreso: mayo-2009
Mensajes: 109
Antigüedad: 15 años
Puntos: 1
Exclamación problema al subir archivo, un ejemplo funcionando para ver el problema

hola que tal , estoy desarrollando un sistema el cual me permite obtener una imagen subida por un usuario ... esta imagen luego es trasladada a una carpeta y una ves alli la redimenciono a una medida especificada anteriormente y la traslado a otra carpeta.
el problema que se me presenta es uno solo, lo explico ...
Supongamos que dejo las medidas predeterminadas en ancho: 310 alto: 250 y subo una imagen de 300 x 300 , el script se ejecuta normalmente , guarda la imagen todo , pero al modificar ancho y alto de la imagen a 310 x 250 es como si a la altuna le cortase un pedazo de la imagen para poder rediemncionarla. Espero haberme explicado , como ya se q no se me entendio mucho por que no me se explicar dejo
LA PAGINA FUNCIONANDO: http://www.minicio.com.ar/subir_fotos.php / CONTIENE EL EJEMPLO Y LA IMAGEN QUE UTILIZO PARA LA PRUEBA.

al parecer este problema solo sucede con el alto ( espero q este dato ayude)

Les agradeceria mucho q me ayuden , vengo 3 dias intentando en mi casa arreglarlo :S y no doy con la solucion
aca dejo el codigo:
Código PHP:
<?php
         $dirbase 
'Directorio web interno';
         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"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();
                     }
                  }
                  
escalar($dirbase.'temp/'.$nombre_archivo310250);
                  if (!
unlink($dirbase.'temp/'.$nombre_archivo)) {
                     echo 
"fallo al borrar imagen original temporal";
                     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.";
               }
            }
         }   

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("imagenes/img1.jpg");   
         
$datos getimagesize("imagenes/img1.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 $ancho;
         
$alto_final round($datos[1] / $ratio);
         
$escalada imagecreatetruecolor($ancho_final,$alto_final);
         
imagecopyresampled ($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,$altura);
         
imagecopyresampled ($thumb$escalada0000$ancho$altura$ancho$altura); // calidad
$_POST['asd'] = 'http://www.minicio.com.ar/miniaturas/'.$prefijo_thumb.$nombre_archivo.'.jpg';
         
imagejpeg($thumb,$camino.$prefijo_thumb.$nombre_archivo.'.jpg');
      }
   }
}

>

<!
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>

<
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" /> Porfavor para realizar la primera prueba descarga la "Imagen Original".
    </
label>
  </
p>
</
form>
<
table width="675" height="312" border="1">
  <
tr>
    <
td width="329" height="33">Imagen Originalmedias 300 x 300</td>
    <
td width="330">Imagen Dimencionadamedias 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>
muchas gracias dede ya



perdon , con imagenes mas chicas que 310 x 250tambien pasa lo mismo ....

Última edición por mauro770; 13/11/2009 a las 15:13