Page 1 sur 2
fichier DDS calcule taille
Publié : mar. 16/mars/2010 0:54
par bebou007
salut a tous voila j'aurais besoin de calculer la taille d'un fichier dds grace au info qui sont dans l'entete du fichier j'arrive a recuperer la largeur et hauteur le probleme c'est que suivant le dxt la taille pris et differente et j'arrive pas a trouver plus d'explication sur le format
j'en ai besoin car je connait le debut du fichier mais pas la fin dans un fichier archive merci pour votre aide
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 1:42
par Ar-S
Aurais-tu un petit fichier DDS à nous soumettre pour faire d'éventuels tests ?
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 12:32
par bebou007
oui bien sur
http://bebou007.free.fr/image269-806131712-524416-.dds
http://bebou007.free.fr/image517-815919104-8320-.dds
http://bebou007.free.fr/image7-909312-11064-.dds
donc voila 3 images dds
le dernier chiffre entre -524416- correspond a la taille du ficheir en decimale le probleme c'est que la je la connais la taille j'aimerai pouvoir trouver met fichier dds sans connaitre la taille merci
en position 12 et 16 il y a la largeur et la hauteur en pixel
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 13:06
par case
avec filesize() ca marche pas ?
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 13:11
par bebou007
lol il faut lire mon post je cherche a trouver un fichier dans un autre fichier donc sa marche pas je vais avoir la taille de tous le fichier qui contient les autre fichier
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 13:57
par Ar-S
En gros tu as une archive genre Zip avec des fichiers dds dedans et tu veux connaitre la taille d'un fichier spécifique ?
--edit--
Si c'est le cas je vois pas trop comment faire excepter d'extraire le fichier de l'archive..
j'ai essayé de l'ouvrir avec winHex, je ne vois pas d'info concernant la taille.
En réalité je suis pas sûr d'avoir compris ton problème.
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 19:22
par bebou007
ben en fait c'est comme un zip si on veut mais pas compresser dedans il y a des tas de fichier et je peut trouver le debut du fichier dds car il commence pas DDS mais pour toruver la fin c'est une autre histoire
en fait selon le dxt utilier dans le dds la taille pris seras plus ou moins compresser
en fait j'arrive par fois a arriver a un calcule qui correspond bien a la taille du fichier mais c'est pas le cas pour tous les fichier certain dds il suffit de faire largeur*hauteur+128 octet de l'entête
certain c'est largeur*hauteur*3 voir fois 4 et certain si on fait juste largeur*hauteur sa dépasse de loin la taille du fichier qui et plu léger
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 19:33
par Ar-S
J'ai trouve cette page qui devrait peut être te faire avancer.
http://fr.imageconverterplus.com/help-c ... rmats/dds/
Tu as le descriptif des dxt et autres
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 21:08
par bebou007
merci j'avais deja vue je vais voir du coter de la lib nvidia pour le dds peut etre qu'il me renvera la taille
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 21:15
par djes
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 21:44
par bebou007
merci sa vas m'aider beaucoup
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 22:31
par Ar-S
Tant mieux parce que là moi je cale, trop compliqué pour mon petit cerveau de piaf.
Re: fichier DDS calcule taille
Publié : mar. 16/mars/2010 22:34
par case
bebou007 a écrit :lol il faut lire mon post je cherche a trouver un fichier dans un autre fichier donc sa marche pas je vais avoir la taille de tous le fichier qui contient les autre fichier
ha ok , j'avais pas fait gaffe a ce detail

Re: fichier DDS calcule taille
Publié : mer. 17/mars/2010 0:00
par case
j'ai l'impression que c'est pas encore ca ,) bon courage pour la suite :p
Code : Tout sélectionner
file$="image269-806131712-524416-.dds"
InitSprite()
Structure header
stru_size.l ;taille de la structure (124)
flags.l ;Flags to indicate valid fields. Always include DDSD_CAPS, DDSD_PIXELFORMAT, DDSD_WIDTH, DDSD_HEIGHT.
height.l ;hauteur de l'image en pixel
width.l ;largeur de l'image en pixels
size.l ;longueur d'une ligne de pixel en octet si le fichier n'est pas compresse, du total de l'image si il est compresse
depth.l ;For volume textures, this is the depth of the volume. dwFlags should include DDSD_DEPTH in this case.
mipmapcount.l ;For items with mipmap levels, this is the total number of levels in the mipmap chain of the main image. dwFlags should include DDSD_MIPMAPCOUNT in this case.
reserved.l[11];reserved
pixelformat.l ;pixelformat
ddscaps.w ;16-byte value that specifies the capabilities structure.
reserved2.l[2];reserve
endstructure
blah.header
*mem=AllocateMemory(FileSize(file$))
rd=ReadFile(#PB_Any,file$)
ReadData(rd,*mem,MemorySize(*mem))
CloseFile(rd)
CopyMemory(*mem+4,@blah,SizeOf(blah))
nb=Len(Str(blah\size))
off=128
Global main=OpenWindow(#PB_Any,0,80,1024,1024,"test")
Global screen=OpenWindowedScreen(WindowID(main),0,0,1024,1024,0,0,0)
x=0
y=0
ClearScreen($202020)
StartDrawing(ScreenOutput())
Repeat
;
color1=PeekW(*mem+off):off+2
color2=PeekW(*mem+off):off+2
r1=((color1 & %1111100000000000) >>11)
g1=((color1 & %0000011111100000) >>5)
b1=(color1 & %0000000000011111)
;
r2=((color2 & %1111100000000000) >>11)
g2=((color2 & %0000011111100000) >>5)
b2=(color2 & %0000000000011111)
pix_enc=PeekL(*mem+off):off+4
mask_x=30
For yy=0 To 3
For xx=0 To 3
mask=%11<<mask_x
Select (pix_enc & mask)>>mask_x
Case 00
rc=r1
gc=g1
bc=b1
Case 01
rc=r2
gc=g2
bc=b2
Case 10
rc=((2*r1)+r2)/3
gc=((2*g1)+g2)/3
bc=((2*b1)+b2)/3
Case 11
rc=((2*r2)+r1)/3
gc=((2*g2)+g1)/3
bc=((2*b2)+b1)/3
EndSelect
If x+xx<blah\width And y+yy<blah\height
Plot(x+xx,y+yy,RGB(rc,gc,bc))
EndIf
Next
Next
x+4
If x=blah\width
x=0
y+4
EndIf
Until off=blah\size
StopDrawing()
FlipBuffers()
Repeat
ev=WaitWindowEvent()
Until ev=#PB_Event_CloseWindow
Re: fichier DDS calcule taille
Publié : mer. 17/mars/2010 0:23
par bebou007
merci case pour ton aide sur le site il dise que les format compresser sont dxt1 dxt2 dxt3 dxt4 dxt5 je dds que j'ai choisi c'est un fichier dds dxt1 donc size devrais me donner la taille de l'image en fait je vien de voir que size me donner 8192 hauteur 128 largeur 128 par contre si j'ouvre avec photoshop le dds et bien j'ai 6 image en largeur et pas une de 128*128
si je fait 6*8192 +128 de l'entête j'obtient bien la taille du fichier mais comment sa se fait qu'il me met que 128 en largeur alors qu'il fait 768 en tous cas merci pour ton aide