Hola gente, el caso es que me he creado una clase llamada Utils.php donde estoy metiendo algunas utilidades, y no consigo que una función me funcione correctamente.
El panorama es el siguiente. Estoy haciendo pruebas para pasar imagenes fisicas de disco a string y despues las codifico en base64 (para posteriormente meterlas a BD pero ahora no es el caso).
Y luego el proceso contrario, una vez tengo la imagen en string, intento decodificarla de nuevo y mostrarla en el navegador.
El caso es que si pongo todo el codigo en el mismo php a saco funciona bien, pero si hago la llamada a través de la función no funciona.
EJEMPLO -- CODIGO TODO EN EL MISMO PHP
Aqui tenemos el index.php en el que solo tengo la llamada a la página images.php
<?php
echo '<img src="images.php">';
?>
Aqui tenemos el fichero images.php, el cual puesto de esta manera funciona perfectamente, me muestra la imagen por el navegador después de las pruebas de codificado, decodificado,etc.
<?php
$handle = fopen("imagen.jpg","r");
$img = fread($handle, filesize("imagen.jpg"));
fclose($handle);
//die($img);
$imgenc = base64_encode($img);
$imgdecoded = base64_decode($imgenc);
$new_im = imagecreatefromstring($imgdecoded);
Header("Content-Type: image/jpeg");
Header("Content-Description: PHP Generated Image");
Imagejpeg($new_im);
?
Y ahora entra el problema en cuestión. En vez de poner el codigo de transformación de imagenes en base64 en imagen.php, lo tengo en la clase Utils.php con la siguiente función:
function FicheroABytes($rutafichero) {
$handle = fopen($rutafichero,"r");
$img = fread($handle, filesize($rutafichero));
fclose($handle);
//die($img);
$imgenc = base64_encode($img);
return $imgenc;
}
}
Pues bien, si en vez de poner todas las lineas en el mismo fichero, instancio la clase y llamo a la función FIcheroABytes, no consigo ver la imagen en el navegador.
El codigo sería el siguiente
$ImageUtils = new Utils();
$imagenenc = $ImageUtils->FicheroABytes("imagen.jpg");
$imagendesenc= base64_decode($imagenenc);
$new_im = imagecreatefromstring($imagendesenc);
Header("Content-Type: image/jpeg");
Header("Content-Description: PHP Generated Image");
Imagejpeg($new_im);
El caso es que la función devuelve una pedazo de ristra de datos que puedo ver
haciendo un echo, pero no la consigue interpretar.
Me sale en el browser la imagén como si estuviera "rota".
Saludos y gracias de antemano!.