SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: Solman en Martes 30 de Noviembre de 2010, 11:50

Título: LEER JPG EN HEXADECIMAL
Publicado 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.
Título: Re: LEER JPG EN HEXADECIMAL
Publicado por: shadow_rev en Martes 30 de Noviembre de 2010, 16:31
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:
Título: Re: LEER JPG EN HEXADECIMAL
Publicado por: m0skit0 en Miércoles 1 de Diciembre de 2010, 01:24
No tienes que quitarle nada, ni tampoco pasarlo a decimal. No lo uses como un string, sino como un array de bytes.

Cita de: "shadow_rev"
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.