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.
<?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.
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
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
Coloque solo el:
list(, $Base64Img) = explode(',', $Base64Img);
Y me siguio dando el mismo error
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.
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