Decodificar imagen base 64

Iniciado por daigodark, 20 Julio 2015, 01:58 AM

0 Miembros y 1 Visitante están viendo este tema.

daigodark

Buenas noches, escribo para preguntar lo siguiente:

¿Como hago para decodificar una imagen que esta en mi base de datos en base 64, ya que tengo un código reciclado ("modifciado") de Internet pero me lanza este erro?
Notice: Undefined offset: 1 in D:\Documentos\Mis Documentos\Inscripcion\sacarimagen.php on line 21

la linea numero 21 tiene esto:

list(, $Base64Img) = explode('=', $Base64Img);

Si lo quito no da error pero no carga la imagen.

Aquí les dejo el código completo espero puedan ayudarme y de antemano gracias.
Código (php) [Seleccionar]

<?php 

# Buscamos la imagen a mostrar
$bd= new SQLite3('Asistencia.db');
$s$bd->query("SELECT * FROM imagen WHERE id='1';");
while(
$row=$s->FetchArray()){
if(
$row['ID']){
# Mostramos la imagen
$Base64Img=$row['Foto']; 

echo
"

"
.$Base64Img;}};



//eliminamos data:image/png; y base64, de la cadena que tenemos
//hay otras formas de hacerlo    
list(, $Base64Img) = explode('/'$Base64Img);
list(, 
$Base64Img) = explode('+'$Base64Img);
list(, 
$Base64Img) = explode('='$Base64Img);



//Decodificamos $Base64Img codificada en base64.
$Base64Img base64_decode($Base64Img);
//escribimos la información obtenida en un archivo llamado 
//unodepiera.png para que se cree la imagen correctamente
file_put_contents('unodepiera.jpg'$Base64Img);
echo 
"<img src='unodepiera.jpg' alt='unodepiera' />";
?>



[MOD] Usa las etiquetas GeSHi, para postear codigo.

engel lex

la cosa es que las imagenes en base 64 como aparentemente las tienes que tener guardadas (según el comenrio) es "data:image/png;base64,...."

y las lineas 19 a 21
Código (php) [Seleccionar]
list(, $Base64Img) = explode('/', $Base64Img);
list(, $Base64Img) = explode('+', $Base64Img);
list(, $Base64Img) = explode('=', $Base64Img);


lo que hacen es, agarrar lo que está en la db y si hay "/" separa el codigo por eso y agarra solo lo que está de segundo... igual para el "+" y el "="... sin embargo no entiendo para que hace eso, en tal caso esas 3 lineas deberían ser solo

list(, $Base64Img) = explode(',', $Base64Img);

has el cambio y dime como te fue el reultado
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

daigodark

Coloque solo el:

list(, $Base64Img) = explode(',', $Base64Img);


Y me siguio dando el mismo error

MinusFour

Una mejor pregunta sería porque estas almacenando ese string en tu base de datos, que por cierto no sabemos el contenido del string. Solo sabemos que encima de un string (del cual no sabemos nada) tienes tu información de la imagen en base64. Que por cierto + y / son caracteres validos para base64 y lo que estas haciendo puede cortar información de la imagen.

daigodark

Como por lo visto no leiste todo o no lo quisiste entender el codigo es reciclado trate de entenderlo y solo me salia el error, entre para consultar  el por que no para que me digan que mis preguntas no son serias, ya resolvi el problema Gracias Engel Lex