optimiser lecture fichier image
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:
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;
}
} |