Page 2 of 2
Re: How to search image files in bin file.
Posted: Tue Dec 13, 2011 9:33 pm
by infratec
I modified it again:
Now it also removes the 16 bytes from the 'DDS files'.
I can use IrfanView now to show the files
So you can start IrfanView from PB in commandline mode and convert the dds to png.
i_view32 name.dds /convert=name.png
Than open it in PB as normal image.
Bernd
Re: How to search image files in bin file.
Posted: Tue Dec 13, 2011 11:38 pm
by moob
infratec wrote:I modified it again:
Now it also removes the 16 bytes from the 'DDS files'.
I can use IrfanView now to show the files
So you can start IrfanView from PB in commandline mode and convert the dds to png.
i_view32 name.dds /convert=name.png
Than open it in PB as normal image.
Bernd
Thank very much guys..
i have one more question i can use FreeImage.dll to convert dds to png or jpeg??
thanks guys...
Re: How to search image files in bin file.
Posted: Wed Dec 14, 2011 12:02 am
by moob
thanks to all...
I use freeImage to show dds.
here is the example:
Code: Select all
IncludeFile "RW_FreeImage_Inc.pb"
Global dib = FreeImage_Load(#FIF_DDS, "2.dds", #DDS_DEFAULT)
Global bitmap = CreateDIBitmap_(GetDC_(#Null), FreeImage_GetInfoHeader(dib), #CBM_INIT, FreeImage_GetBits(dib), FreeImage_GetInfo(dib), #DIB_RGB_COLORS)
If OpenWindow(0, 0, 0, 245, 105, "Image with FreeImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ImageGadget(0, 10, 10, 100, 83, bitmap)
ResizeWindow(0, 100, 100, FreeImage_GetWidth(dib)+20, FreeImage_GetHeight(dib)+20)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
FreeImage_Unload(dib)
Thanks again guys...
Re: How to search image files in bin file.
Posted: Fri Dec 16, 2011 10:37 pm
by moob
Danilo wrote:
Code: Select all
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
ImportC #PB_Compiler_Home + "purelibraries/linux/libraries/zlib.a"
CompilerCase #PB_OS_MacOS
ImportC "/usr/lib/libz.dylib"
CompilerCase #PB_OS_Windows
ImportC "zlib.lib"
CompilerEndSelect
uncompress(*dest, *destLen, *source, sourceLen)
EndImport
Procedure zipUnpackMemory(*source, sourceLen, *dest, destLen)
If Not uncompress(*dest, @destLen, *source, sourceLen)
ProcedureReturn destLen
EndIf
ProcedureReturn 0
EndProcedure
Structure WESYSFileEntry
offset.l
size.l
fileNameOffset.l ; 0xFFFFFFF0 = unnamed file
EndStructure
Filename$ = "Emerson_face.bin"
File = ReadFile(#PB_Any, Filename$)
If File
Size = Lof(File)
*FileBuffer = AllocateMemory(Size)
If *FileBuffer
If ReadData(File, *FileBuffer, Size) = Size
Magic$ = ""
For i = 3 To 7
Magic$ + Chr(PeekA(*FileBuffer + i))
Next i
Debug Magic$
If Magic$ = "WESYS"
CompressFlag = PeekA(*FileBuffer + 2)
Debug "Compressed: "+Str(CompressFlag)
If CompressFlag = $01
UnCmprSize = PeekL(*FileBuffer + 12)
*Temp = AllocateMemory(UnCmprSize)
If *Temp
If zipUnpackMemory(*FileBuffer + 16, Size - 16, *Temp, UnCmprSize) = UnCmprSize
numFiles = PeekL(*temp)
Debug "numFiles: "+Str(numFiles)
*wsf.WESYSFileEntry = *Temp +8
For i = 0 To numFiles-1
Debug *wsf\offset
Debug *wsf\size
Debug Hex(*wsf\fileNameOffset)
Debug PeekL(*Temp+*wsf\offset)
If PeekL(*Temp+*wsf\offset) = 808469847
If CreateFile(0, Str(i)+".dds")
Debug Str(PeekL(*Temp+*wsf\offset+4))
Debug Str(PeekL(*Temp+*wsf\offset+8))
Debug Str(PeekL(*Temp+*wsf\offset+12))
WriteData(0, *Temp+*wsf\offset+16, *wsf\size-16)
CloseFile(0)
EndIf
EndIf
*wsf+12
Next i
EndIf
FreeMemory(*Temp)
EndIf
EndIf
EndIf
EndIf
FreeMemory(*FileBuffer)
EndIf
CloseFile(File)
EndIf
hi again...
I use the Danilo code but have a problem
in some faces only extract the face bump
i try use the code of infratec but have problems too, in some face don't extract the dds file.
here is one of the many face i have tried and result is bump face.
http://www.mediafire.com/?p77zig4arcii0bf
i have use Devil wrapper to convert dds to png but the problem is the file dds extract with zlib code.
Danilo or infratec can you help me to correct this??
thanks...
Re: How to search image files in bin file.
Posted: Fri Dec 16, 2011 11:31 pm
by infratec
Hi moob,
I modified my listing from the first page.
The filename offset in this file is $FFFFFFF0 and not $FFFFFFFF.
But still it is not a valid offset for a own fielname.
Bernd
Re: How to search image files in bin file.
Posted: Fri Dec 16, 2011 11:38 pm
by moob
infratec wrote:Hi moob,
I modified my listing from the first page.
The filename offset in this file is $FFFFFFF0 and not $FFFFFFFF.
But still it is not a valid offset for a own fielname.
Bernd
hi, infratec
i will test and post and i give you an an answer.
thanks infratec
edit:
----------------------------------------
infratec work well with the new face i put here, i will teste with more files.
infratec thanks you very much.
Re: How to search image files in bin file.
Posted: Sat Dec 17, 2011 12:16 am
by infratec
Hi moob,
you are welcome.
Btw. the other files are KTMDL files. I know that these are 3D modells.
Do you know a program to view or convert them ?
Bernd
Re: How to search image files in bin file.
Posted: Sat Dec 17, 2011 1:13 am
by moob
infratec wrote:Hi moob,
you are welcome.
Btw. the other files are KTMDL files. I know that these are 3D modells.
Do you know a program to view or convert them ?
Bernd
Yes infratec i sent one PM
and i have one new problem with another face crash my application
if one face don't have the bump file, use this code crash.
the faces is here if anyone can help.
http://www.mediafire.com/?g4epqq333syc1g4
infratec if i try extract dds with your code on this face crash, but if i use the Danilo code not crash and extract.
So i need adapt the code to extract dds file on faces with bump file and without bump file.
but i don't have purebasic skills enought.
Thank you for help me

Re: How to search image files in bin file.
Posted: Sat Dec 17, 2011 11:46 am
by infratec
Hi moob,
again a problem with the filename offset.
I hope I managed this now for all cases (l changed my first listing).
I check now if the fileofsset is larger than the file.
This should work in any cases
Bernd
Re: How to search image files in bin file.
Posted: Sun Dec 18, 2011 5:22 am
by moob
infratec wrote:Hi moob,
again a problem with the filename offset.
I hope I managed this now for all cases (l changed my first listing).
I check now if the fileofsset is larger than the file.
This should work in any cases
Bernd
thanks infratec...
i will try
