Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera estou tentando criar uma função no PHP que consiga ler um arquivo binário e tranformar em uma imagem. Existe já essa função pronta em uma outra linguagem(http://code.google.com/p/tibiaapi/source/b...SpriteReader.cs)
Gostaria de saber se tem como tranformar isso para o php?
Aqui tem um comentario de um cara que explica como funciona esse arquivo:
>
The first 4 bytes contain information for the sprite version(?), like in the .dat file I'm not sure what this information is used for, maybe so the client can make sure you're using the right sprite file(?). The next 2 bytes are the number of sprites in the file. Then starts each sprites information.
Each sprite is offset by 4 and the sprites start 6 bytes from the beginning of the file, because of the sprite version and number of sprites. Also, the first sprite has an ID of 2 so you have to subtract 1 from each sprite ID to get to its offset. The equation used for this is (6 + (spriteID - 1) * 4). Now that we know this let's get back to the sprite information.
From what I understand the first 3 bytes of each sprite is unnecessary when getting the sprite's pixel information, so just skip the first 3 bytes. The next 2 bytes are the size of the sprite, ie. if this returned 36 then the sprite would be 6x6 pixels. The next 2 bytes are the amount of transparent pixels until a colored pixel. Then the next 2 bytes are the amount of colored pixels until a transparent pixel. The next 3 bytes are the RGB value of the colored pixels and the amount depends on how many colored pixels were found. (ie. If 1 colored pixel was found then there would just be 3 bytes [r][g], if there were 2 colored pixels found then there would be 2 sets of 3 bytes [r][g][r][g].) The transparent/colored pixel information is read from left to right (starts at the top-left of the sprite and ends at the bottom-right).
Here's the structure of the first sprite including the header information (spr version and number of sprites). [x] = number of bytes:
[4] - spr version = 1228754556
[2] - number of sprites = 28729
[3] - ?
[2] - sprite size = 512
[2] - transparent pixels = 397
[2] - colored pixels = 4
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 27
[2] - colored pixels = 5
[3] - RGB value = [0][0][0]
[3] - RGB value = [12][84][17]
[3] - RGB value = [18][145][21]
[3] - RGB value = [8][88][12]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 3
[2] - colored pixels = 1
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 22
[2] - colored pixels = 6
[3] - RGB value = [0][0][0]
[3] - RGB value = [16][98][28]
[3] - RGB value = [17][199][21]
[3] - RGB value = [21][169][28]
[3] - RGB value = [9][104][15]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 2
[2] - colored pixels = 4
[3] - RGB value = [0][0][0]
[3] - RGB value = [115][180][44]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 19
[2] - colored pixels = 8
[3] - RGB value = [0][0][0]
[3] - RGB value = [157][8][13]
[3] - RGB value = [235][30][31]
[3] - RGB value = [8][174][17]
[3] - RGB value = [13][105][26]
[3] - RGB value = [157][8][13]
[3] - RGB value = [237][27][35]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 1
[2] - colored pixels = 4
[3] - RGB value = [0][0][0]
[3] - RGB value = [4][57][8]
[3] - RGB value = [115][180][44]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 19
[2] - colored pixels = 12
[3] - RGB value = [0][0][0]
[3] - RGB value = [6][62][10]
[3] - RGB value = [6][60][10]
[3] - RGB value = [12][152][17]
[3] - RGB value = [13][97][26]
[3] - RGB value = [6][62][10]
[3] - RGB value = [6][62][10]
[3] - RGB value = [1][40][5]
[3] - RGB value = [0][0][0]
[3] - RGB value = [4][69][9]
[3] - RGB value = [33][169][45]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 21
[2] - colored pixels = 11
[3] - RGB value = [0][1][0]
[3] - RGB value = [5][61][10]
[3] - RGB value = [13][174][18]
[3] - RGB value = [26][189][35]
[3] - RGB value = [12][84][25]
[3] - RGB value = [1][40][5]
[3] - RGB value = [8][95][13]
[3] - RGB value = [16][169][21]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 20
[2] - colored pixels = 9
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][1][0]
[3] - RGB value = [7][55][12]
[3] - RGB value = [25][188][32]
[3] - RGB value = [19][234][23]
[3] - RGB value = [22][132][29]
[3] - RGB value = [7][61][10]
[3] - RGB value = [6][61][10]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 1
[2] - colored pixels = 5
[3] - RGB value = [0][0][0]
[3] - RGB value = [119][187][45]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 17
[2] - colored pixels = 8
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [6][42][8]
[3] - RGB value = [15][148][20]
[3] - RGB value = [18][231][23]
[3] - RGB value = [19][184][23]
[3] - RGB value = [16][86][22]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 1
[2] - colored pixels = 6
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [1][35][4]
[3] - RGB value = [5][82][9]
[3] - RGB value = [131][205][49]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 17
[2] - colored pixels = 14
[3] - RGB value = [0][0][0]
[3] - RGB value = [115][180][44]
[3] - RGB value = [1][9][3]
[3] - RGB value = [15][103][20]
[3] - RGB value = [17][224][22]
[3] - RGB value = [30][192][38]
[3] - RGB value = [20][105][27]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [1][22][4]
[3] - RGB value = [15][145][19]
[3] - RGB value = [0][0][0]
[3] - RGB value = [1][37][4]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 18
[2] - colored pixels = 14
[3] - RGB value = [0][0][0]
[3] - RGB value = [6][85][10]
[3] - RGB value = [0][0][0]
[3] - RGB value = [13][104][18]
[3] - RGB value = [18][155][27]
[3] - RGB value = [21][225][27]
[3] - RGB value = [23][179][30]
[3] - RGB value = [22][153][31]
[3] - RGB value = [0][0][0]
[3] - RGB value = [13][178][16]
[3] - RGB value = [15][194][19]
[3] - RGB value = [13][178][19]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 19
[2] - colored pixels = 13
[3] - RGB value = [0][0][0]
[3] - RGB value = [4][63][9]
[3] - RGB value = [0][0][0]
[3] - RGB value = [13][82][18]
[3] - RGB value = [19][205][26]
[3] - RGB value = [19][206][26]
[3] - RGB value = [14][190][20]
[3] - RGB value = [18][151][24]
[3] - RGB value = [17][143][22]
[3] - RGB value = [8][101][12]
[3] - RGB value = [14][197][21]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 20
[2] - colored pixels = 12
[3] - RGB value = [0][0][0]
[3] - RGB value = [4][63][8]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [22][134][31]
[3] - RGB value = [24][137][33]
[3] - RGB value = [0][0][0]
[3] - RGB value = [11][84][15]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [6][78][10]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 21
[2] - colored pixels = 2
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 1
[2] - colored pixels = 2
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[2] - transparent pixels = 1
[2] - colored pixels = 4
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
[3] - RGB value = [0][0][0]
Eae alguém vai encarar?
Carregando comentários...