Bonjour, je développe une application qui lit des images médicales et renvoie leurs miniatures. La taille d'une image est 3000x3000 pix. et celle de d'une icône 96x96 pix. donc je lis mon fichier avec un pas d'échantillonnage 3000/96 .Le problème c'est que c'est trop lent, sur un répertoire de 160 images 2 min. Je me demande est ce que c'est l'accès au disque ou je n'utilise pas les bonne fonction?
Voici mon code:
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 inStream = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); //j'ouvre mon fichier en lecture //je lis l'entête je calcule la aille de mon image //j'alloue de la mémoire //........... // initialiser le pointeur du buffer ou on stocke les pixels lus framePtr = frameBuffer; //parcourire le fichier for (l = 0;l < (int)nlIcon;l++) { for (k = 0;k < (int)ncIcon; k++) { ligne = (float)l * lpasH; colonne = (float)k * lpasH; // calculer la distance de décalage distance = (LONG)(floorf(ligne)* (float)ncImg + floorf(colonne)) * octetsParPixel ; decal = distance - distance_old; // recuperer l'anciene distance distance_old = distance + octetsParPixel; // positionner le pointeur sur le pixel à lire SetFilePointer(inStream, decal, NULL, FILE_CURRENT); // lire le pixel ReadFile(inStream, framePtr, octetsParPixel, &bytesRead, NULL); // incrementer le pointeur du buffer framePtr += octetsParPixel; } }
Partager