SoloCodigo
Programación Web y Scripting => PHP => Mensaje iniciado por: Solman en Martes 30 de Noviembre de 2010, 11:50
-
Hola a todos amigos de SoloCodigo a ver si me pueden ayudar con este problemilla.
Sucede que tengo un archivo .txt donde hay un JPG que se encuentra en codigos Hexadecimales y deseo leerlo para poder mostrarlo con PHP, el contenido de este archivito es:
0xFFD8FFE00104A4649460110010100FFFE03E43524541544F523A2067642D6A7065672076312E3020287573696E6720494A47204A50454720763632292C2064656661756C74207175616C697479AFFDB04308667658777998AC14DCBBC191213F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432FFDB0431999CBC18DD1832211C213232323......0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
jeje disculpen Q NO COLOQUE TODO PERO ES BASTANTE pero weno es asi tiene bastantes lineas, la cosa es que como estuve leyendo el JPG tiene una cabecera que empieza en FFD8 asi reconocemos que se trata de una imagen JPEG y termina en FFD9 despues siguen puros 0 , la idea es como leer esto para mostrarlo como imagen.
Lo que yo hice fue:
1.- quitarle los dos caracteres de adelante "0x" eso no va
2.- leer de dos en dos esta cadena hexadecimal e ir convirtiendola a decimal y despues a caracter e ir concatenando en una variable
3.- finalmente la encodifico a base 64 y la arrojo por la web
el codigo es el siguiente:
$img1 =substr($img1, 2, strlen($img1)-2);
$c = "";
for ($i=0;$i<strlen($img1);$i+=2) {
$decimal = hexdec(substr($img1,$i,2));
$c.=chr($decimal);
}
$img = base64_encode($c);
$image = "data:image/jpeg;base64,$img";
echo '<img src="'.$image.'" />';
porfavor espero puedan ayudarme muchas Gracias.
-
Puede ser ignorancia mía, pero.... no deberías convertirlo a binario en vez de decimal ??? :unsure:
Por otro lado, me has dado una buena idea de un proyecto para implementar en vacaciones, jeje :good:
-
No tienes que quitarle nada, ni tampoco pasarlo a decimal. No lo uses como un string, sino como un array de bytes.
Puede ser ignorancia mía, pero.... no deberías convertirlo a binario en vez de decimal ??? :unsure:
Binario, octal, decimal, hexadecimal... es todo lo mismo. Son meras representaciones para nosotros los mortales. Te da igual uno que otro. Eso sí, unas veces te viene mejor manipularlo como tal o cual dependiendo de las operaciones que quieras realizar, pero para poder entenderlo uno mismo. Para el ordenador todo (y me refiero a todo) es binario, siempre.