begin process at 2012 02 13 00:46:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

Taille de buffer pour récupérer tous les octets d'un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Taille de buffer pour récupérer tous les octets d'un fichier

samedi 28 juillet 2007 à 12:00:27 | Taille de buffer pour récupérer tous les octets d'un fichier

Tibabou

Bonjour,

    Je souhaite, tout simplement, récupérer tous les octets d'un fichier dans un tableau. Jusque là, rien d'extraordinaire.
J'essaie donc de récupérer les n octets d'un fichier BMP sans prendre l'entête (largeur*hauteur*3).
Ci-dessous, un résumé de mon code (j'ai mis l'essentiel et supprimé les différents tests).

unsigned char *bmpTab;
int width, height;

width = 624;
height = 352;

bmpTab = new unsigned char[width*height*3]; // tableau pour stocker l'image

FILE*fich;
fich=fopen("img.bmp","r");

fseek(fich,54, SEEK_SET); // je me place après l'entête
fread(bmpTab, 1, width*height*3, fich); // je lis tous les octets

fclose (fich);


Je récupère donc, théoriquement, un tableau de 624*352*3 = 658 944 octets.
Le problème, c'est qu'à la fin de mon tableau (bmpTab), j'ai plein d'octets avec la valeur '205'.
A l'affichage, ça donne : la première ligne et 1/4 de la deuxième en "gris clair" (RGB = 205 205 205).

J'essaie donc de ralonger mon buffer... et je me rend compte que quand je change "width*height*3" par "width*height*3+512" cela affiche bien tous les bons pixels.
(512 ou plus d'ailleurs...)

Constat : width*height*3+512 = 658 944 + 512 = 659 456 octets (la taille occupée sur le dique - cf propriétés du fichier)

La taille des clusters est de 4096 octets au maximum sur une partition formatée en NTFS mais il peut monter à 32Ko en FAT32, je n'ai pas envie d'allonger systématiquement mon buffer de 32768 octets pour être sûr que je récupèrerai tous les octets de mon fichier.

Quelqu'un peut-il me venir en aide ?
Merci d'avance.

Salutations
Tibabou
samedi 28 juillet 2007 à 15:22:21 | Re : Taille de buffer pour récupérer tous les octets d'un fichier

The_Guardian

Réponse acceptée !
Salut

Essaies de mettre "rb" dans son fopen au lieu de "r" si t'es sous windows
parce que "r" tout seul t'a deja pose des problemes, ca lisait pas tout ce que tu lui demandais

Une autruche ne se cuit pas aux petits lardons
samedi 28 juillet 2007 à 16:00:40 | Re : Taille de buffer pour récupérer tous les octets d'un fichier

Tibabou

Merci The_Guardian, tout fonctionne très bien.

Tibabou
samedi 28 juillet 2007 à 21:18:31 | Re : Taille de buffer pour récupérer tous les octets d'un fichier

Matt67

Bonsoir,

Juste une petite remarque, soit tu fais du c alors utilise malloc (ou calloc) pour allouer de la memoire, soit du c++, dans ce cas, tu utilises les fonctions c++ qui font bien pour ouvrir, lire et fermer le fichier...

Matt...


Cette discussion est classée dans : fichier, octets, width, height, fich


Répondre à ce message

Sujets en rapport avec ce message

GetDlgItem? [ par jimtruand ] salut!le but de mon prog MFC est de pouvoir saisir du texte dans une edit box et de recopier le texte dans un fichier.docquand je clique sur le bouton c++ creation d'un fichier texte a nom variable [ par sloaneaaaa ] ben voila je voudrai creer un fichier texte auquel je puisse donner n'importe quel nom ms g des erreurs que je comprend pasle nom de fichier est ds un Integration fonction C [ par metek ] Bonjour!!Voila j'ai une ptite question sur les API!!!J'ai fait un petit programme qui liste un fichier texte cherche un mot entré et recupere le reste envoi fichier via socket [ par elanspeech ] Bonjour,J'ai fait un client/serveur, la communication se passe bien. cependant, je ne parviens pas a envoyer plusieurs fichiers a la suite avec la soc Modifier des octets dans un fichier ? [ par supergrey ] Salut, je voudrais savoir comment modifier des octets au milieu d'un fichier, jusqu'ici je recopier tout le fichier en changeant les octet voulu mais Allocation dynamique 3 dimensions [ par gilimcce ] Bonsoir,J'alloue la mémoire d'un tableau contenant les pixels d'une image. Si je déclare classiquement mon tableau ( ex: image[512][1024][3] ) tout se Probleme de thread qui bug quand on bouge la souris [ par squellettor ] Bonjour,Je programme actuellement sous borland C++ v6 et j'ai un gros bug de thread.Je fait un visualisateur d'image qui créé des thumbnails pour chaq [ActiveX] commnet récupérer les attributs Height / Width ? [ par teamkiller ] Je programme en VC++ 2003 et je souhaite à l'intérieur de mon programme récupérer les attributs height / width de la balise object . J'ai réussi à ré Probleme urgent [ par pozor16 ] Une image est composée d'un ensemble de points (des pixels) dont on peut fixer la couleur en donnant la valeur des 4 composantes qui composent une cou Octets squatteur [ par gdpasmini ] Bonjour a tous ! Un phénomène étrange se produit dans mon programme... Je suis censé prendre des données provenant d'un réseau que je place octet par


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales