Mostrar una Imagen guardada en Binario

Cuando guardo una imagen en mi BD, lo hace en binario pero al leerla no me la muestra completa ¿A qué se deberá eso? Y he puesto varias imágenes y algunas si las pone completas y otras a la mitad o menos, he visto también las dimensiones de estas y solo las de 500x500 las despliega bien en la ventana pero las que pasan de esas dimensiones me las deja a la mitad.
Acá te dejo mi código por si tienes tiempo de chequear que estoy haciendo mal pues nunca he programado en PHP ni JavaScript.
--------------------------------------------------------------------------------------
$folio_venta = $_POST['folio'];
     $articulos = $_POST['folio'];
     $tipo_cobro = $_POST['tipo_cobro'];
     $sucursal = $_POST['sucursal'];
     $fecha_pago = $_POST['date'];
     $monto = $_POST['monto'];
     $comprobante = $_POST['folio'];
     $foto_name= $_FILES['foto']['name'];
     $foto_size= $_FILES['foto']['size'];
     $foto_type=  $_FILES['foto']['type'];
     $foto_temporal= $_FILES['foto']['tmp_name'];
     $lim_tamano= $_POST['lim_tamano'];
     $foto_titulo= $_POST['titulo'];
     $foto_id= $_POST['folio'];
     # Limitamos los formatos de imagen admitidos a: png, jpg y gif
     if ($foto_type=="image/x-png" OR $foto_type=="image/png")
     {
      $extension="image/png";
     }
     if ($foto_type=="image/pjpeg" OR $foto_type=="image/jpeg")
     { 
      $extension="image/jpeg";
     }
     if ($foto_type=="image/gif" OR $foto_type=="image/gif")
     {
      $extension="image/gif";
     }
     /*Condicionamos el INSERT para que la foto tenga nombre,
un tamaño distinto de cero y menor que el límite
       y que la variable extensión no sea null*/
     if ($foto_name != "" AND $foto_size != 0 AND $foto_titulo !='' AND $foto_size<=$lim_tamano AND $extension !='')
     {
     /*Reconversion de la imagen para meter en la tabla
       abrimos el fichero temporal en modo
       lectura "r" y binaria "b"*/
      $f1= fopen($foto_temporal,"rb");
     # Leemos el fichero completo limitando la lectura al tamaño del fichero
      $foto_reconvertida = fread($f1, $foto_size);
     /* Anteponemos "\" a las comillas que pudiera contener el fichero
        para evitar que sean interpretadas como final de cadena.*/
      $foto_reconvertida=addslashes($foto_reconvertida);
     /* Abrimos la base de datos y escribimos las intrucciones para Insertar y
        en el campo BLOB insertaremos la foto_reconvertida.*/
      $base="ventasml";
      $tabla="fotos";
      $conexion=mysql_connect ("localhost","root","");
      mysql_select_db ($base, $conexion);
      $meter="INSERT INTO ".$tabla;
      $meter .=" (num_ident, imagen, nombre, tamano, formato) ";
      $meter .=" VALUES('$foto_id','$foto_reconvertida','$foto_titulo',";
      $meter .= "$foto_size, '$extension')";
      $conexion = mysql_connect("localhost","root","");
      mysql_select_db("ventasml",$conexion);
      $sql_query = "INSERT INTO datos_deposito values('$folio_venta','$articulos','$tipo_cobro','$sucursal','$fecha_pago','$monto','$comprobante')";
      mysql_query($sql_query,$conexion);
         if (@mysql_query($meter,$conexion))
      {
       echo "
<script>alert('Datos Guardados.')</script>
";
       if($_POST['titulo'])
       {
        echo "
<hr>
<br>";
        echo "
<div align='right'>De clic <a href='http://localhost/Dinacom/Listo.php'>aqui</a> para continuar o Vea la imagen que nos ha enviado.</div>
";
       }
      }
      else
      {
      }
     }
     else
     {echo "
<script>alert('No Guardamos tus datos, revisa que la imagen sea JPG, GIF o PNG. Y el tamaño maximo de 1 MB.')</script>
";}
    }
   ?>
    <FORM action="g_fotos.php" method="get" target="ventana1" onsubmit="window.open('', 'ventana1', 'scrollbar=yes,resizable=yes,left=50,statusbar=no')">
     <?php
      echo"<INPUT type='hidden' name='id' value=" . $foto_id . ">";
     ?>
     <INPUT type="submit" name="ver" value="Ver Imagen"><br />
    </FORM>
----------------------------------------------------------------------------------------------------
En el Form ACTION="g_fotos.php" tengo el siguiente codigo:
---------------------------------------------------------------------------------------------
<?
if ($_GET['id'])
{
$base="ventasml";
$tabla="fotos";
$conexion=mysql_connect ("localhost","root","");
mysql_select_db ($base, $conexion);
    $sacar = "SELECT * FROM fotos WHERE num_ident = " . $_GET['id'];
    $resultado =...
3

3 respuestas

Respuesta
1
Pues así a bote pronto no parece que el código esté mal... Lo único que me parece sospechoso es el addslashes que haces al contenido binario del fichero, no tiene muy buena pinta, pero tiene sentido si hay un carácter ".
¿Lo más seguro es que necesites quitar las slashes que le añades al grabar para mostrarlo continuamente? Prueba a pasarle un stripslashes antes de hacer el echo.
Respuesta
1
Sinceramente nunca he utilizado una base de datos para guardar imágenes, ya que le genera bastante peso y trabajo, recuerda estamos en web y necesitamos que cargue el sitio de volada, si no el usuario, pudiera cerrar la página, y eso no es recomendable...
Lo que yo hago en estos casos, es subir las imágenes a una carpeta, del hosting, y guardar en la base de datos solo la url de la imagen...
Así el sitiono tarda en cargar, y no tengo problemas como los que se te presentan...
Si gustas yo te puedo ayudar con este código.
OK, mira pues yo también pensé lo mismo antes de hacerle así pero como todavía no la subimos a la web esperaremos un poco para ver como interactúa pero si pudieras mandarme el código o algunos ejemplos de como hacerle así de guardar en una carpeta y seleccionarla con el url te lo agradecería, mi correo es [email protected] por favor si fueras tan amable ya que como te decía la verdad soy nuevo en esto de php y todas sus aplicaciones pero creo si entender fácil y rapido.
Por si alguien vé la pregunta la respuesta fue de que el tipo de dato BLOB no puede leer las imagens que sobrepasan un tamaño y para esto cambie a MEDIUMBLOB que no se como pero las lee de todo tipo de tamaño jijiji algo relativamente sencillo, pero a los nuevos en php se nos dificulta.
Un Saludo..!
L.I. Juan Carmona
Respuesta
1
Sorry por nada más copiar y pegar pero es que necesito esto de mucha urgencia.
Saludos..!
Hola Experto:
No se si me explique bien o mal pues si me muestra la imagen pero a medias es algo así:

Y eso no se como remediarlo por favor si puedes ayudarme te lo agradecería demasiado.
Un Saludo..!
L.I. Juan Carmona
¿Has seguido el tutorial que te he puesto?, ¿Has probado con ese?
Gracias amigo, aunque el tuto que me pasaste esta muy bien, tenemos este código casi terminado y como que para adecuar el que viene ahí seria otra vez "empezar de cero" pues tomamos la decisión de buscarle y encontramos ya la solución.
Un Saludo..!
L.I. Juan Carmona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas