Bonjour à tous

Mon but est de créer un code afin de pouvoir ouvrir une image en C (sans utiliser OpenGL) de la façon RGB.
Ci joint mon code mais je ne comprends pas pourquoi lorsque je lance le programme, l'image ne s'affiche pas.

Merci d'avance de votre aide

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
int readImage(image_desc *pDesc, char * fName)
{
    FILE *fp;
    targa_header *header;
    long length;
    uint8_t *buffer=NULL;
    uint8_t *colourmap=NULL;
    uint8_t *ptr;
 
    fp = fopen (fName, "rb");
    if (!fp)
    {
        fprintf (stderr, "error: couldn't open \"%s\"!\n",fName);
        return NULL;
    }
    else printf("fichier ouvert\n");
 
    fseek(fp,0,SEEK_END);
    length=ftell(fp);
    fseek(fp,0,SEEK_SET);
 
 
    buffer=(uint8_t*)malloc(sizeof(uint8_t)*length);
    if (!buffer)
    {
        printf(stderr,"Error: memory allocation failed");
        fclose(fp);
        return NULL;
    }
    fread(buffer,1,length,fp);
    fclose(fp);
 
    printf("length: %d\n",length);
 
    ptr=buffer;
 
    header=(struct targa_header*)ptr;
    ptr+=sizeof(targa_header);
 
    pDesc=(struct targa_header*)malloc(sizeof(targa_header));
    ptr+=header->idlength;
 
    pDesc->pRed=(uint8_t*)malloc(sizeof(uint8_t)*pDesc->width*pDesc->height);
    pDesc->pBlue=(uint8_t*)malloc(sizeof(uint8_t)*pDesc->width*pDesc->height);
    pDesc->pGreen=(uint8_t*)malloc(sizeof(uint8_t)*pDesc->width*pDesc->height);
 
    if(header->colourmaptype)
    {
        colourmap=ptr;
    }
 
    int i;
    uint8_t colour;
    for(i=0;i<pDesc->width*pDesc->height;++i)
    {
        colour=ptr[i];
 
        pDesc->pRed[(i*3)]=colourmap[(colour*3)+0];
        pDesc->pBlue[(i*3)]=colourmap[(colour*3)+1];
        pDesc->pGreen[(i*3)]=colourmap[(colour*3)+2];
        printf("pDesc->pRed[%d]: %d\n",i,pDesc->pRed[i]);
    }
    printf("%d\n",pDesc->width);
 
    fclose (fp);
 
    return pDesc;
 
}
 
int main()
{
    image_desc *pDesc;
    char * fName;
    fName="image.tga";
    readImage(&pDesc,fName);
}