AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -23%
(Black Friday) Apple watch Apple SE GPS 44mm ...
Voir le deal
199 €

 

 Ajouter un machin de texte à la fin d'un fichier .png

Aller en bas 
4 participants
AuteurMessage
red-error
Utilisateur confirmé: Rang ****
red-error


Messages : 1015
Projet Actuel : Ajouter un machin de texte à la fin d'un fichier .png Bas-machoire2000

Ajouter un machin de texte à la fin d'un fichier .png Empty
MessageSujet: Ajouter un machin de texte à la fin d'un fichier .png   Ajouter un machin de texte à la fin d'un fichier .png EmptyDim 27 Fév 2011 - 23:36

Hello all !

Ca fait du bien de retrouver le CBNA tout d'abord. ^^ Le CBNA


Ensuite :
Je veux rajouter du texte à la fin d'un fichier .png (meuh non, ça va pas tout casser ! Si ?)
Donc, j'ai fait des tests manuellement, et ajouter des trucs à la fin du fichier ne semble pas altérer sa lecture.


Mais maintenant que j'essaie de le faire avec Game Maker, ça rate. :/
Soit ça remplace tout le contenu, soit ça n'enregistre pas, mais je n'arrive pas à ajouter mon morceau de texte à la fin de mon fichier. Sad
J'ai même essayé d'enregistrer d'abord tout le contenu du .png dans une variable texte puis de réinjecter le tout, mais le texte en GM fait rater le .png.


Je crois qu'il faut utiliser la fonction file_text_open_append(fname), mais je n'arrive pas à la faire fonctionner. Il me faudrait une explication de cette fonction.


Mon code qui marche sauf pour le points cité : (en gras ce qui est important)
Spoiler:

Le résultat voulu étant
Première partie : Le png lisible
Deuxième partie après le png : des infos que je peux lire moi-même qui n'influent pas sur le png

Le problème étant : je n'arrive pas à coller les infos après le png.

La solution possible étant : file_text_open_append(fname), fonction dont je ne sais pas me servir.


Merci d'avance ! tord


Dernière édition par red-error le Dim 27 Fév 2011 - 23:50, édité 1 fois
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Ajouter un machin de texte à la fin d'un fichier .png Empty
MessageSujet: Re: Ajouter un machin de texte à la fin d'un fichier .png   Ajouter un machin de texte à la fin d'un fichier .png EmptyDim 27 Fév 2011 - 23:46

C'est étrange, j'essayerais de voir pour ton code demain.
Sinon as-tu essayé en mode binaire ? Tu place le curseur en fin de fichier et tu écrit ton texte byte a byte.
Si ça marche pas alors GM va encore remonter dans mon estime lol.
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
Wargamer


Messages : 6938
Projet Actuel : Bataille de cake au fruits

Ajouter un machin de texte à la fin d'un fichier .png Empty
MessageSujet: Re: Ajouter un machin de texte à la fin d'un fichier .png   Ajouter un machin de texte à la fin d'un fichier .png EmptyLun 28 Fév 2011 - 0:00

Effectivement, une image a ses dimentions d'inclu dans son ouverture, alors il va lire que l'image et pas ce qu'il y a après.
En théorie tu peux mettre ce que tu veux snas passer en binaire vu que c'est que toi qui va pouvoir le décrypter.
Par contre faut que tu sache où le lire et quand arrêter.(surement en commancant par la fin et autre) si tu le fait pas tu peux même pas savoir si ca a marcher awesome

Sinon le _open_append fait que préparer le fichier pour une lecture à la fin au lieu du début, tu fait comme d'ab pour le reste
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error


Messages : 1015
Projet Actuel : Ajouter un machin de texte à la fin d'un fichier .png Bas-machoire2000

Ajouter un machin de texte à la fin d'un fichier .png Empty
MessageSujet: Re: Ajouter un machin de texte à la fin d'un fichier .png   Ajouter un machin de texte à la fin d'un fichier .png EmptyLun 28 Fév 2011 - 0:25

Merci !

C'est tout bête donc, au lieu d'avoir un
fileid=file_text_open_write(filename+".png");
J'ai un
fileid=file_text_open_append(filename+".png");

Je garde le même write et ça marche ! (c'est à dire que je vois mon texte quand j'ouvre mon .png avec Notepad++ mrgreen2 )


Yepee.
Oups, y'a juste la lecture que j'avais mal compris, je sais que je dois lire les 32*32 caractères se trouvant à 32*32 de la fin,
mais je sais pas comment mettre le curseur à cet endroit précis... Finalement je suis obligé de passer par le binaire ?
Quel format je dois rentrer dans byte ? Un char ?

Edit : en fait je vais faire des read_string jusqu'au EOF puis avec le char que j'ai là, manipuler les 32*32.
Mais ça marche pas non plus. Qu'ai-je fait de travers ?
while(!file_text_eof(fileid))
{a=file_text_read_string(fileid);}
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
Wargamer


Messages : 6938
Projet Actuel : Bataille de cake au fruits

Ajouter un machin de texte à la fin d'un fichier .png Empty
MessageSujet: Re: Ajouter un machin de texte à la fin d'un fichier .png   Ajouter un machin de texte à la fin d'un fichier .png EmptyLun 28 Fév 2011 - 0:57

comme ya pas de fonctions seek pour les fichier texte(je crois) tu va devoir passer par le binaire awesome
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error


Messages : 1015
Projet Actuel : Ajouter un machin de texte à la fin d'un fichier .png Bas-machoire2000

Ajouter un machin de texte à la fin d'un fichier .png Empty
MessageSujet: Re: Ajouter un machin de texte à la fin d'un fichier .png   Ajouter un machin de texte à la fin d'un fichier .png EmptyLun 28 Fév 2011 - 1:41

Ok, même en copiant tout le fichier y'a une erreur, il copie pas tout. Je dois faire un truc de travers.
Sinon donc je suis partant pour les binaires, maif faut entrer quoi pour byte dans file_bin_write_byte(fileid,byte) ?
0 ou 1, ou autre chose comme "0", "1", true, false, ou des char ?
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error


Messages : 1015
Projet Actuel : Ajouter un machin de texte à la fin d'un fichier .png Bas-machoire2000

Ajouter un machin de texte à la fin d'un fichier .png Empty
MessageSujet: Re: Ajouter un machin de texte à la fin d'un fichier .png   Ajouter un machin de texte à la fin d'un fichier .png EmptyLun 28 Fév 2011 - 2:06

Allélouia, les binaires fonctionnent à merveille !

Merci Oni et Wargy, mon éditeur Pikub'art importe et exporte en machins dans un PNG dorénavant ! money

Dodo là. Yum!
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
[TheDarkTiger]


Messages : 7420
Localisation : Essonne

Ajouter un machin de texte à la fin d'un fichier .png Empty
MessageSujet: Re: Ajouter un machin de texte à la fin d'un fichier .png   Ajouter un machin de texte à la fin d'un fichier .png EmptyLun 28 Fév 2011 - 2:47

Si tu veux faire les choses proprement, il faudrait en fait ajouter une balise "tEXt " dans ton fichier PNG.

méthode propre:
Code:
var Fn, f, S;
var H, i, l;
var IEND;

Fn = argument0;
S = argument1;


//Vérif fichier
if(!file_exists(Fn))
{
    //Pas de fichier
    return 1;
}
//show_message("yep, it's file.");
f = file_bin_open(Fn, 2);


//Vérif PNG
H=chr(137)+chr(80)+chr(78)+chr(71)+chr(13)+chr(10)+chr(26)+chr(10);
for(i=1; i<9; i+=1)
{
    //Pas un PNG
    if(chr(file_bin_read_byte(f))!=string_char_at(H, i)){return 2;}
}
//show_message("yup, PNG ahead.");


//Rembobine le IEND
file_bin_seek(f, file_bin_size(f)-12);

//Chunk
//Longueur
l=string_length(S)+2;
file_bin_write_byte(f, l/$1000000 mod 255);
file_bin_write_byte(f, l/$10000 mod 255);
file_bin_write_byte(f, l/$100 mod 255);
file_bin_write_byte(f, l mod 255);

//Ecriture de "tEXt"
file_bin_write_byte(f, $74);
file_bin_write_byte(f, $45);
file_bin_write_byte(f, $58);
file_bin_write_byte(f, $74);

//Keyword
file_bin_write_byte(f, ord('D'));
file_bin_write_byte(f, 0);

//Texte
for(i=1; i<=string_length(S); i+=1)
{
    file_bin_write_byte(f, ord(string_char_at(S, i)));
}

//CRC
l=$FFFFFFFF;
file_bin_write_byte(f, l/$1000000 mod 255);
file_bin_write_byte(f, l/$10000 mod 255);
file_bin_write_byte(f, l/$100 mod 255);
file_bin_write_byte(f, l mod 255);


//Ecriture du IEND
IEND=chr($00)+chr($00)+chr($00)+chr($00)+chr($49)+chr($45)+chr($4e)+chr($44)+chr($ae)+chr($42)+chr($60)+chr($82);
for(i=1; i<=string_length(IEND); i+=1)
{
    file_bin_write_byte(f, ord(string_char_at(IEND, i)));
}

file_bin_close(f);

Méthode dégeux :
Code:
var Fn, f, S, i;

Fn = argument0;
S = argument1;


//Vérif fichier
if(!file_exists(Fn))
{
    //Pas de fichier
    return 1;
}
//show_message("yep, it's file.");
f = file_bin_open(Fn, 2);


//Rembobine le IEND
file_bin_seek(f, file_bin_size(f));

//Texte
for(i=1; i<=string_length(S); i+=1)
{
    file_bin_write_byte(f, ord(string_char_at(S, i)));
}


file_bin_close(f);

La méthode propre n'est pas parfaite (pas de calcul du CRC).
La méthode dégeux est dégeux .
Revenir en haut Aller en bas
http://www.tdms.fr
Contenu sponsorisé





Ajouter un machin de texte à la fin d'un fichier .png Empty
MessageSujet: Re: Ajouter un machin de texte à la fin d'un fichier .png   Ajouter un machin de texte à la fin d'un fichier .png Empty

Revenir en haut Aller en bas
 
Ajouter un machin de texte à la fin d'un fichier .png
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Lire du GML dans un fichier texte
» Modification d'un fichier texte
» supprimer une ligne d'un fichier texte
» lire le texte d'un fichier txt en tant que gml
» Problème avec la lecture de fichier texte externe

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: