Foros del Web » Programando para Internet » Javascript »

Decodificar img src en base64 al imprimir por pantalla.

Estas en el tema de Decodificar img src en base64 al imprimir por pantalla. en el foro de Javascript en Foros del Web. Buenos días compañeros! A ver si alguien me puede guiar un poco sobre como hacerlo. Hago un readfile de un fichero .html para mostrarlo dentro ...
  #1 (permalink)  
Antiguo 24/11/2011, 04:50
 
Fecha de Ingreso: agosto-2009
Mensajes: 91
Antigüedad: 14 años, 8 meses
Puntos: 2
Decodificar img src en base64 al imprimir por pantalla.

Buenos días compañeros!

A ver si alguien me puede guiar un poco sobre como hacerlo. Hago un readfile de un fichero .html para mostrarlo dentro de un textbox. El problema es que ese fichero .html tiene imágenes codificadas en base64, ¿cómo puedo hacer que cuando ejecute readfile($mificherohtml) a la vez decodifique esas imágenes que estan en base64?

Me cuelga el navegador, pues las imágenes en base64 son muy pesadas.

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 24/11/2011, 05:07
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: Decodificar img src en base64 al imprimir por pantalla.

Estás dando poca información de como lo implementaste, muy dificil ayudarte.

Por otro lado, cuantas imagenes son? que tamaño tienen? Algo mal debes estar haciendo para que te cuelgue el browser.
__________________
blog | @aijoona
  #3 (permalink)  
Antiguo 24/11/2011, 05:26
 
Fecha de Ingreso: agosto-2009
Mensajes: 91
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Decodificar img src en base64 al imprimir por pantalla.

Gracias por responder Aijoona. La verdad, es difícil de explicar.

Se trata de un editor html (ckeditor), el usuario puede crear un .html a través de un textarea y guardarlo. Los archivos .html se guardan perfectamente, el problema viene al "abrir documento" que ya se ha generado para editarlo de nuevo en caso de que el usuario quiera añadir algun cambio. Al hacer readfile dentro del textarea el navegador se cuelga (he probado a hacerlo fuera del textarea y lo abre correctamente).

Las imágenes son aleatorias, el usuario puede insertar el número de imágenes que quiera.

Las imágenes sin codificar funcionan perfectamente. El problema viene cuando "arrastra y pega" algunas imágenes de otras webs en el editor y éstas estan codificadas en base64, entonces me he fijado en que la dirección del enlace de img src es inmensa. Las imágenes en sí no sobrepasan los 250kb cada una, lo que pesa es el código generado por base64.

Por eso he llegado a la conclusión de que el problema es que el textárea no soporta tantas líneas de código creadas por la encriptación en base64. Para solucionarlo he pensado en decodificar las líneas que contienen ese código en base64 y mostrar ese resultado. Lo ideal sería que pudiera hacer algo como: readfile(base64_decode_solo_de_los_img_src($conten ido_de_mi_ficherohtml));

Pero no sé si es posible.

Muy agradecido.
  #4 (permalink)  
Antiguo 24/11/2011, 06:37
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: Decodificar img src en base64 al imprimir por pantalla.

Bueno, si ese es el caso mi recomendación es que hagas un parser que reemplace tus imágenes con data uris por imagenes reales.

Dado el input:
Código HTML:
Ver original
  1. <img class="result" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEW/v7////+Zw/90AAAAEUlEQVQI12P4z8CAFWEX/Q8Afr8P8erzE9cAAAAASUVORK5CYII=">

Devolver:
Código HTML:
Ver original
  1. <img class="result" src="/path/to/images/id">

Además, obviamente de crear la imagen correspondiente en base al string en base64. Para obtener una imagen de dicho string podes usar algo como esto:

Código PHP:
Ver original
  1. /**
  2.      * Recibe un image uri y lo convierte en
  3.      * el binario correspondiente
  4.      *
  5.      * @param $blob
  6.      * @return bool|string
  7.      */
  8.     private function base64ToImage($blob) {
  9.         $parts = explode(',', $blob);
  10.         $blob = end($parts);
  11.  
  12.         $blob = base64_decode($blob);
  13.  
  14.         // Validaciones de seguridad
  15.         if (!$this->isValidImageContent($blob)) {
  16.             return false;
  17.         }
  18.  
  19.         return $blob;
  20.     }

El parser en este caso puede ser una función con unas pocas expresiones regulares, no debería complicarte demasiado.
__________________
blog | @aijoona
  #5 (permalink)  
Antiguo 25/11/2011, 03:42
 
Fecha de Ingreso: agosto-2009
Mensajes: 91
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Decodificar img src en base64 al imprimir por pantalla.

Muchas gracias compañero, en cuanto tenga un momento intentaré hacer el parser.

Etiquetas: base64, decodificar, html, img, src
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 23:55.