Writing appl. generated graphics on hard disk

  • Babak Sayyid Hosseini

    Dear DevIL users,

    I am trying to export application generated graphics into a file and browsed
    the corresponding DeVIL tutorial on http://openil.sourceforge.net/tuts/tut_5/index.htm :


    ILubyte *Lump;
    ILuint Size;
    FILE *File;

    File = fopen("monkey.tga", "rb");
    fseek(File, 0, SEEK_END);
    Size = ftell(File);

    Lump = (ILubyte*)malloc(Size);
    fseek(File, 0, SEEK_SET);
    fread(Lump, 1, Size, File);

    ilLoadL(IL_TGA, Lump, Size);


    The above example loads graphics (+ file header) from a file into memory.
    A subsequent ilSaveImage(..) will of course write the whole lump into a new file.

    As one is typically not interested in setting up an image header for every supported
    format though, we wanted to know whether there is a possibility to use a built in DevIL image
    encoder and marshaller that sets up the corresponding image headers for a disired
    image type automatically (or based on few parameters passed).

    This is what we are willing to do (in code):


       pluginImageID = 0;
       ilGenImages(1, &pluginImageID);

       const unsigned char bufferWidth = 64;
       const unsigned char bufferHeight = 64;
       GLubyte buffer[bufferWidth][bufferHeight][4];
       int i, j, c;
       for (i = 0; i < bufferHeight; i++) {
          for (j = 0; j < bufferWidth; j++) {
             c = (((i & 0x8) == 0) ^((j & 0x8) == 0)) * 255;
             buffer[i][j][0] = (unsigned char) c;
             buffer[i][j][1] = (unsigned char) c;
             buffer[i][j][2] = (unsigned char) c;
             buffer[i][j][3] = (unsigned char) 128;

       ILboolean loadingSucceeded = ilLoadL(IL_WHATEVER_??, buffer, 64*64*4);
       ILenum errorType = ilGetError();
       const wchar_t* errorString = iluErrorString(errorType);

       const wchar_t* outputFilename = L"D:\\home\\babak\\DevIL_TestExport.png";
       ILboolean savingSuccedded = ilSaveImage(outputFilename);    


    Babak Sayyid Hosseini

    • Denton Woods

      Denton Woods - 2009-05-19

      You probably want to look at using ilTexImage for what you are trying instead of ilLoadL.

      • Babak Sayyid Hosseini

        Thank you Denton,
        the function does the job.


        Babak Sayyid Hosseini


Log in to post a comment.