Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Coder une image dans un fichier texte [ Mutimédia / Image & Vidéo ] (orelien)

mardi 27 novembre 2007 à 21:03:29 | Coder une image dans un fichier texte

orelien

Bonjour,

J'aimerais savoir comment ecrire et lire le contenu d'une image dans/depuis un fichier texte.
Après avoir crée une image dynamiquement, je souhaiterais l'enregistrer dans un fichier texte pour pouvoir par la suite la réouvrir en lisant ce même fichier.

Si quelqu'un a une idée...

Merci
Orélien.

mardi 27 novembre 2007 à 22:39:48 | Re : Coder une image dans un fichier texte

WhiteHippo

Membre Club
Bonsoir,

En codant par exemple ton image en base 64 (codage MIME). Cette méthode est couramment employée dans les newsgroups pour transférer des données binaires de façon "lisible".

Cordialement.

"L'imagination est plus importante que le savoir." Albert Einstein

mercredi 28 novembre 2007 à 09:55:54 | Re : Coder une image dans un fichier texte

Francky23012301

Membre Club
Salut,

Attention l'encodage en Bas64 augmente la taille du fichier d'un quart de sa valeur (Si 10 ko il ferat 12,5ko).

Exemple de fonction :

Function Base64Encode(S1: TStream) : string;
const
Code64: string[64]=('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/');
var
  Sg,Str: string;
  N, J: Integer;
  B: array[1..3] of Byte;
const
  LinLen = SizeOf(B)* 20;
begin
while S1.Position < S1.Size do
  begin
    N:= 0;
    Sg:= '';
      while (N < LinLen) and (S1.Position < S1.Size) do
        begin
          J:= S1.Size-S1.Position;
          if J > SizeOf(B) then
          J:= SizeOf(B);
          Inc(N, J);
          S1.ReadBuffer(B, J);
          Sg:= Sg+ Code64[(B[1] shr 2)+1];
          Sg:= Sg+ Code64[(B[1] and $03) shl 4 + (B[2] shr 4)+1];
          if J > 1 then Sg:= Sg+ Code64[(B[2] and $0F) shl 2 + (B[3] shr 6)+1]
                   else Sg:= Sg+ '=';
          if J > 2 then Sg:= Sg+ Code64[(B[3] and $3F)+1]
                   else Sg:= Sg+ '=';
        end;
    Str:=Str+Sg;
    end;
Result:=Str;
end;


Procedure Encode_Image(ImageName,TextName : String);
Var
FS : TFileStream;
TextFile:TStringList;
Begin
FS:=TFileStream.Create(ImageName,fmOpenRead);
TextFile:=TStringList.Create;
 Try
   TextFile.Text:=Base64Encode(FS); 
    TextFile.SaveToFile(TextName);
  Finally
  TextFile.Free; 
  FS.Free;
  End;
End;


mercredi 28 novembre 2007 à 10:38:57 | Re : Coder une image dans un fichier texte

Guillemouze

et pourquoi pas la methode simple ? :

procedure SauverLimage(LImage: TImage; NomFichier: String);
begin
  monImage.picture.SaveToFile(NomFichier);
end;

procedure ChargerLimage(LImage: TImage; NomFichier: String);
begin
  monImage.picture.LoadFromFile(NomFichier);
end;
 

 

mercredi 28 novembre 2007 à 11:46:58 | Re : Coder une image dans un fichier texte

Francky23012301

Membre Club
Pourquoi pas la méthode simple ? En enregistrant un bitmap au fichier on texte, on le bousille. Le savetofile('C:\MonImage.txt') va fonctionner mais le loadfromfile('C:\MonImage.txt') va planter

Evidemment j'ai vérifié la réponse

mercredi 28 novembre 2007 à 12:30:21 | Re : Coder une image dans un fichier texte

cirec

Membre Club Administrateur CodeS-SourceS
Salut,

Hola ... Le fait de changer l'extension du fichier ne va rien modifier dans la structure du fichier, il reste le même.
Par contre à la lecture il va planter ... mais pas à cause de la structure du fichier mais à cause de l'extension.

En effet la fonction qui se charge de lire le fichier contrôle d'abord l'extension, si celle ci n'est pas du format attendu il déclenche une erreur.

Et pour corriger ce problème il suffit de changer l'extension .TXT en .BMP (pour un bitmap bien sûr)

 
@+
Cirec


mercredi 28 novembre 2007 à 12:56:00 | Re : Coder une image dans un fichier texte

Francky23012301

Membre Club
Hé hé : j'ai fais un test hier soir Cirec.

J'ai ouvert un ficher bitmap avec le blocnote je l'ai enregistré sous un format txt. J'ai supprimé l'image réouvert le fichier texte et enregistré sous un format bmp. Tu sais quoi ? le fichier c'est crouté

mercredi 28 novembre 2007 à 13:06:30 | Re : Coder une image dans un fichier texte

Francky23012301

Membre Club
Hormis ce beug dans windows , tu as totalement raison ca ne change pas le fichier.

Je me suis mal exprimé : si tu changes l'extension ton fichier il est plus utilisable tel quel, donc il est plus "utilisable" donc ca revient à le bousiller.

Mais je vois pas trop l'intéret de le metter au format txt : ca prend la meme place.

mercredi 28 novembre 2007 à 13:30:49 | Re : Coder une image dans un fichier texte

cirec

Membre Club Administrateur CodeS-SourceS
Salut,

@Francky:
Dans le bloc note oui ... et c'est normale

Moi je parlais uniquement pour "Bitmap.SaveToFile"

Et non je ne vois pas l'intérêt et je rejoins Guillemouze sur ce point :
une sauvegarde normale devrait suffire

@Orélien
Pour avoir une idée sur la structure d'un fichier Bitmap je te conseil d'aller voir sur WotSit.Org

Et pour avoir un petit exemple d'écriture (création) d'un fichier Bitmap (24 / 32 bits) Regarde ce Thread

 
@+
Cirec


mercredi 28 novembre 2007 à 15:04:09 | Re : Coder une image dans un fichier texte

Loda

Membre Club
salut,

je suppose qu'il veux/doit passer le fichier à un endroit qui n'accept que les fichiers text pure. (ce qui était le premier but de l'encodage b64: passer les server qui ne suportaient que l'asci 7bits.)
par exemple un xml?

sinon, je ne vois pas l'intérêt non plus.

A+

Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.


1 2 3

Cette discussion est classé dans : fichier, texte, image, coder


Répondre à ce message

Sujets en rapport avec ce message

compléter des champs d'un fichier texte d'importation de données [ par manudel ] Je dispose d'un fichier au format .DAT, composé de n enregistrements.Ce fichier est composé de 6 champs, avec le point virgule comme séparateur de cha NB Ligne dans un fichier texte [ par ProGMaN007 ] salut, comment connaître le nombre de ligne dans un fichier txt ? trier un fichier texte [ par manudel ] Je dispose d'un fichier texte, composé de 2 champs séparés par un point virgule.Je charge en mémoire ce fichier dans une TStringList.Je veux faire un Lecture fichier texte ligne par ligne [ par MattXSFR ] J'utilise le code suivant pour copier le contenu d'un fichier texte dans une liste box (une ligne de list box pour chaque ligne du fichier) :procedure Imprimer une image et un texte sur la même feuille [ par zeusnul ] Bonjour,J'aimerais pouvoir imprimer une image et un texte sur la même feuille, mais je suis dans l'incapacité de trouver ça dans l'aide de delphi. Je Un Label dans une image.. [ par sophie75 ] Salut à toutes et à tous,C'est mon premier message ici, en fait je débute en Delphi donc excusez-moi si mes questions peuvent parraître idiotes :-)J'a Probleme Quick Report : impressions multiples [ par funemul ] Voila mon probleme :jJ'utilise un fichier texte, que je lis seqenciellement et dont j exporte les donnees vers un composant qRrepot.Mon fichier texte Cacher un fichier texte [ par Furbyz ] Bonjour,Voila je créer un fichier .exe sous delphi 6 qui permet de lire le comptenue d'un fichier texte nommé info.txtjusque la pas de prob. Mais je v Imprimer un fichier texte en utilisant notepad ou word [ par touareg ] Bonjour,Quelqu'un pourrait il me fournir un exemple de code qui lit une liste de fichiers un par un dans un repertoire determine, les imprime en utili Comment decortiquer un fichier texte [ par apz ] salut, voila ma premiere question en delphi apres 8 mois d'absence apres un grand probleme et bien je voulais demarrer avec une petite appplication.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.