Перед запуском примера в папке lib нужно переименовать или удалить файл libILU.dll.a , если конечно там есть файл libILU.a. Если нет этого файла , поищи в прошлых версиях компилятора, или на крайняк пиши, я скину.
Код
'' DevIL example
#include once "IL/il.bi"
#include once "IL/ilu.bi"
If (ilGetInteger(IL_VERSION_NUM) < IL_VERSION) Then
Print "DevIL version is different" : Sleep : End 1
End If
Screen 17,32
ilInit()
dim as string filename = exepath() & "/../../fblogo.bmp"
Dim As ILuint fblogo
ilGenImages(1, @fblogo)
ilBindImage(fblogo)
ilLoadImage(filename)
' фильтр подбирается в зависимости от фото, бывают:
'ILU_NEAREST
'ILU_LINEAR
'ILU_BILINEAR
'ILU_SCALE_BOX
'ILU_SCALE_TRIANGLE
'ILU_SCALE_BELL
'ILU_SCALE_BSPLINE
'ILU_SCALE_LANCZOS3
'ILU_SCALE_MITCHELL
'для данного фото я подобрал билинейный
iluImageParameter ( ILU_FILTER, ILU_BILINEAR)
' изменяем размер
iluScale ( 480, 360, ilGetInteger( IL_IMAGE_DEPTH ) )
' размеры изображения
Var w = ilGetInteger(IL_IMAGE_WIDTH)
Var h = ilGetInteger(IL_IMAGE_HEIGHT)
Dim As UByte Ptr pixdata
' создаем изображение FB
Dim As Any Ptr fbImage = ImageCreate(w,h)
' получаем буфер с пикселями из изображения FB
ImageInfo(fbImage, w, h, , , pixdata)
' поворачиваем пиксели на 180 градусов (вручную вертеть пиксели в массиве было неохота )
' если нужно будет сохранять изображение средствами Devil, то придется изображение опять поворачивать перед сохранением
iluRotate(180)
' копируем пиксели в буфер изображения FB
ilCopyPixels( 0, 0, 0, w, h, ilGetInteger( IL_IMAGE_DEPTH ), IL_RGBA, IL_UNSIGNED_BYTE, pixdata)
' выводим на экран
Put(10,10),fbImage
Sleep
'' Clean up
ilDeleteImages(1, @fblogo)