[PHP] GIF(binair) naar 7bits HEX waarde?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het volgende probleem:

Voor het versturen van een EMS(SMS) via een SMS gateway, met daarin een plaatje moet er het een en het ander omgezet worden naar HEX waardes.

Als ik het vervolgens via de normale bin2hex() functie in PHP doe, krijg ik hier een veel te lange string terug.
Even een voorbeeld van de omzetting van een GIF plaatje naar hex.

Een goede string (via een 3rd party tool omgezet): 0210aaaaac79a3b8bd11d6ae8ec9ef4e9389e33ca459bb9e9f7de16ef2e5897affff

Een verkeerde string (via PHP d.m.v. bin2hex(): 47494638376110001000800000ffffff0000002c00000000100010000002320c8ca7c90617e2930e22396dca93c26529ddc5459429a2ce8aa56837aee9b3b0e16b6ef9a5bed9c993e13e254d6d87341500003b

Waar het verschil in zit weet ik niet precies, maar volgens mij heeft het met 7 of 8 bits te maken.
Zou iemand weten hoe ik aan een correcte string kan komen zoals die van de 3rd party tool? (Een 7 bits HEX waarde dus, denk ik)

[ Voor 3% gewijzigd door Verwijderd op 19-08-2005 15:56 ]


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
In elke hexcode passen 4 bits. Voor elke byte heb je dus 2 hexcodes nodig. De goede string bestaat uit 68 hexcodes. Jouw string bestaat uit 166 hexcodes. Dat verschil is niet te verklaren door 1 bitje.

Een .gif begint met GIF87a of GIF89a.
code:
1
2
474946383761
G I F 8 7 a

Weet je zeker dat je .gif moet hebben?

[edit]
Ik denk het niet. Met google kwam ik dit tegen:
The bitmap data format used in EMS is the same as OTB, but the header is different.
Je moet dus nog even verder zoeken...

[ Voor 26% gewijzigd door Daos op 19-08-2005 16:42 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Overigens nog even een correctie:

0210aaaaac79a3b8bd11d6ae8ec9ef4e9389e33ca459bb9e9f7de16ef2e5897affff

moet zijn

aaaaac79a3b8bd11d6ae8ec9ef4e9389e33ca459bb9e9f7de16ef2e5897affff

0210 bestond uit de breedte en hoogte van het plaatje.

Voor de rest begin ik door de bomen het bos niet meer te zien. Overal lees ik weer andere dingen :(

[ Voor 18% gewijzigd door Verwijderd op 19-08-2005 17:31 ]


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Ik heb net ff wat specs van EMS bekeken en daarin kom ik onder andere dit tegen:
# EMS Large Picture - pure black and white, one pixel per bit (32*32 = 128 bytes)
# EMS Small Picture - pure black and white, one pixel per bit (16*16 = 32 bytes)
EMS ondersteunt zelf dus blijkbaar geen GIF. Je zult je gif moeten inlezen als afbeeldingen en vervolgens in RAW formaat wegschrijven zoals hierboven is aangegeven. Je convert programmaatje doet dat blijkbaar al voor je. Dat is heel iets anders dan een GIF in HEX notatie coderen ;)

Zie ook: http://homepages.nildram....Example_of_an_EMS_message

@Daos: Leg dan ook uit waarom je de specs post en wat er (waarschijnlijk) aan de hand is ;)

[ Voor 16% gewijzigd door Creepy op 19-08-2005 19:18 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oplossing:

ImageMagick gebruiken om een GIF om te zetten naar OTB (over the air bitmap). Vervolgens bin2hex'en. En vervolgens in een EMS header zetten en een aantal andere dingen mee doen. :)

[ Voor 3% gewijzigd door Verwijderd op 19-08-2005 20:16 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Dit werkt voor mij (GD required):
PHP:
1
2
3
4
5
6
7
8
9
$file = 'file.gif';
$image = imagecreatefromgif($file);

ob_start();
image2wbmp($image);
$wbmp = ob_get_contents();
ob_end_clean();

echo bin2hex($wbmp);

geeft:
code:
1
00001010aaaaac79a3b8bd11d6ae8ec9ef4e9389e33ca459bb9e9f7de16ef2e5897affff

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
crisp schreef op zaterdag 20 augustus 2005 @ 12:34:
Dit werkt voor mij (GD required):
PHP:
1
2
3
4
5
6
7
8
9
$file = 'file.gif';
$image = imagecreatefromgif($file);

ob_start();
image2wbmp($image);
$wbmp = ob_get_contents();
ob_end_clean();

echo bin2hex($wbmp);

geeft:
code:
1
00001010aaaaac79a3b8bd11d6ae8ec9ef4e9389e33ca459bb9e9f7de16ef2e5897affff
Hmm, blijkbaar is het OTB formaat dus gelijk aan het WBMP formaat..... dat is mooi meegenomen!
Pagina: 1