This wraps devil and provides a function that convetrs and saves an image into either png/bmp/tga/gif etc for you. Not all of devil is wrapped, only enough to create and save images. You need the devil dll in the same directory as the source.
Strict Global cir:Int[] = New Int[20] Local lib =loadlibrarya("DevIl.dll") Global ilInit() "win32" Global ilGenImages(size:Int,images:Byte Ptr) "win32" Global ilBindImage(image:Int) "win32" Global ilTexImage(width:Int,height:Int,depth:Int,bpp:Int,format:Int,Typ:Int,data:Byte Ptr) "win32" Global ilSaveImage(file:Byte Ptr) "win32" Global ilSave(typ:Int,file:Byte Ptr) "win32" ' IL_COLOUR_INDEX 0x1900 '#define IL_COLOR_INDEX 0x1900 Const IL_RGB = $1907 '#define IL_RGBA 0x1908 '#define IL_BGR 0x80E0 Const IL_BGRA = $80E1 '#define IL_LUMINANCE 0x1909 '#define IL_LUMINANCE_ALPHA 0x190A Const IL_BMP =$0420 Const IL_JPG=$0425 Const IL_PNG=$042A Const IL_TGA=$042D Const IL_GIF=$0436 Const IL_UNSIGNED_BYTE =$1401 If lib Print "opened dll" ilInit = getProcAddress(lib,"ilInit") ilGenImages = getProcAddress(lib,"ilGenImages") ilBindImage = getProcAddress(lib,"ilBindImage") ilTexImage = getprocAddress(lib,"ilTexImage") ilSaveImage = getprocaddress(lib,"ilSaveImage") ilSave = getprocaddress(lib,"ilSave") If ilInit = Null Or ilGenImages=Null Or ilTexImage=Null Or ilSaveImage = Null Print "No @#!*." EndIf Else Print "Failed to open dll" EndIf ilInit() Function ilSaveFile( img:Timage,file:String ,format:Int = il_bmp) Select format Case il_bmp file:+".bmp" Case il_jpg file:+".jpg" Case il_png file:+".png" Case il_gif file:+".gif" Case il_Tga file:+".tga" End Select If FileType(file)=1 DeleteFile file EndIf Local ilImg = ilCreateImage() ilBindImage(ilimg) ilTexImg( img ) ilSave( format,file.tocstring() ) End Function Function ilTexImg( img:Timage ) Local width,height width = ImageWidth(img) height =ImageHeight(img) Local rgb:Byte Ptr = MemAlloc(width*height*4) Local pix:Tpixmap = LockImage(img,0,True,False) For Local y=0 Until height For Local x=0 Until width Local boff = y*(width*4)+(x*4) Local b:Byte Ptr = pix.pixelptr(x,y) rgb[boff] = b[0] rgb[boff+1]=b[1] rgb[boff+2]=b[2] rgb[boff+3]=b[3] Next Next UnlockImage( img ) ilteximage(width,height,1,4,il_bgra,il_unsigned_byte,rgb) MemFree rgb End Function Function ilCreateImage() Local b:Int[20] Local d:Byte Ptr = Byte Ptr(b) ilGenImages(1,d) Return b[0] End Function