Classe de lecture de fichier encodées - Approche Objet - C++ - Programmation
Marsh Posté le 26-07-2003 à 21:24:18
tout dépend des tes contraintes. est que tu as la possibilité de tout charger en mémoire et de travailler dessus, ou est ce que tu dois tout faire sur disque, auquel cas ton prauvre objet est juste un gros descripteur avec des méthodes en plus...
Marsh Posté le 26-07-2003 à 21:27:55
les fichiers sont rikiki (< 1Mo) et sont chargés en memoire par fichiers mappé.
Marsh Posté le 26-07-2003 à 21:34:16
donc t'es quand même du coté du descripteur...
je vois pas ce qu'il y a de crade à manipuler ce genre de chose. pour ma part, j'ai déjà fait ce genre de chose. l'ouverture d'une image avec la création d'un objet remplissez une baterrie de champs, toutes les trames sont en mémoire, et le fichier image refermée. Une sorte de désérialisation en somme, tout décompresser en mémoire pour des manipulations aisées et rapides. Après, des modifications faciles (puisque tout en mémoire). une fonction d'écriture pour déséiraliser et tout remettre en binaire ( j'avais aussi une option au constructeur qui pour demander la mise à jour du fichier original au moment de la destruction). et puis comme une image ça peut etre lourd, des fonctions membre zip/unzip (à base de je sais plus quoi, lzop je crois, fait pour etre tres rapide) pour compresser les trames en mémoire quand on souhaite mettre l'objet de coté par exemple
Marsh Posté le 26-07-2003 à 21:36:02
ok ... donc une grosse classe
MonFichier avec des methodes load, save, get/set frame etc ...
ca ira ?
Marsh Posté le 26-07-2003 à 21:40:49
oui, sans problème. par contre, quand j'ai conçu ma classe, j'étais pas trop pour une méthode load, je préférais associé un ficheir à une image, donc l'unique constructeur prenez un nom de fichier. mais c'est question de gout. Mes méthodes de zip/unzip étaient vraiment sympas et utiles.
Marsh Posté le 26-07-2003 à 21:43:50
j'ai pas de methode load non plus, j'ai une serie de classe
qui me permetten d'obtenir un HANDLER sur un fochier quelconque (disque, distant, memoire) à partir d'un ID arbitraire.
PAr contre, cette histoire de zip/unzip m'interesse bien ...
des liens, exemples ?
Marsh Posté le 26-07-2003 à 21:52:16
ben j'avais utilisé lzo pour sa très très grande rapidité http://www.lzop.org/
mais j'avais aussi hésité avec une classe QT http://doc.trolltech.com/3.2/qbytearray.html qui semble assez efficace également. à toi de tester mais bon QT, si t'es sous windows...
le problème de tout ça c'est la licence aussi. à toi de voir ce que tu fais, mois j'avais été pleinement satisfait
Marsh Posté le 26-07-2003 à 22:04:43
bah c pour un projet perso en Open Source donc LZO devrait suffire non ?
Marsh Posté le 26-07-2003 à 22:08:07
oui, par contre pour LZO, c'est du C et je me souviens que y avais une méthode init à appeler au démarrage. alors je sais pas si c'est thread_safe. au pire du fais un truc élégant en métant tout dans un singleton synchronisé. mais ça marche du tonnerre, regarde mes benchs
tiens, y aussi une version alélgée http://www.oberhumer.com/opensource/lzo/download/
Marsh Posté le 27-07-2003 à 08:35:16
C'est du C effectivemnt, mais c threadsafe aussi.
Hmmm un singleton synchronisé ... oui pourquoi pas (encore qu ele terme synchronisé me laisse pantois :?
Marsh Posté le 26-07-2003 à 21:21:50
Voila j'ai besoin de lire un format de fichier image depuis des fichiers disques.
Le format est le suivant
HEADER GENERAL :
Nombre de frames (N)
Largeur
Hauteur
CRC
Offset de la 1e frame depuis le debut du ficheir
ensuite N headers de frames
HEADER DE FRAMES
Offset des données de la frame
Offset de la frame suivante
ensuite toutes les données des frames encodées en RLE.
Ma question est donc :
Quelle est la maniére le plus "object compliant" de coder un lecteur/decodeur de ces ficheirs et de permettre d'ajouter/retirer des frames dans ce ficheir ...
J'ai toutes mes fonctions de faites mais je n'arrive pas à trouver une implemenrtationobjet bien propre (autre que le gros objets statiques contenants ttes le sofnctions )
Mercid 'avance