• Domingo 22 de Diciembre de 2024, 19:41

Autor Tema:  LEER JPG EN HEXADECIMAL  (Leído 8513 veces)

Solman

  • Miembro MUY activo
  • ***
  • Mensajes: 151
    • Ver Perfil
LEER JPG EN HEXADECIMAL
« en: Martes 30 de Noviembre de 2010, 11:50 »
0
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.

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: LEER JPG EN HEXADECIMAL
« Respuesta #1 en: Martes 30 de Noviembre de 2010, 16:31 »
0
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:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: LEER JPG EN HEXADECIMAL
« Respuesta #2 en: Miércoles 1 de Diciembre de 2010, 01:24 »
0
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.