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 !

DFM READER


Information sur la source

Catégorie :Fichier / Disque Classé sous : DFM, BITMAP, hexadecimal, ASCII, Conversation Niveau : Débutant Date de création : 25/03/2008 Date de mise à jour : 21/04/2008 15:48:34 Vu / téléchargé: 3 268 / 180

Note :
Aucune note

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Cette source lit une image à partir d'une source DFM ( "je pense que ça veux dire: Delphi Form File" :p) bien sure vous pouvez utiliser les pointeurs ou de ASM (pour optimiser le code) moins de variables... fait ce que vous voulez, moi personnellement j'ai pas le temps de faire ça déja j'ai fais cette source juste en break time pour un ami qui a bc chercher sur le net et rien trouvé alors je pense que ça sera utile pour bc de gens.  

bon! pour les DFM je pense que le delphi enregistre tous format que soit image jpeg icon ou tous autre format d'image en bitmap.
j'explique un peut plus,
si on utilisent un  Timage pour enregistrer un image par exemple ; les données de cette image sont enregistrer dans le ficher DFM (Fichier ASCII) dans le Block qui situe entre "Picture.Data = {" jusqu'au prochaine "}" sous format de chaine en Hexadécimale, et il écrit le type de format original dans les 24 premiers bites genre (075 7D..bal bla) pour l'identifier format original "TJPEG ou TBITMAP" ou cas ou vous voulez récupérer ce que vous appartiens bien sure :D!, tous format bitmap commence par 42 4D = M B c a dire format bitmap (pour tester et ouvrer une bitMap avec un éditeur Hex pour voire, d'ailleurs c le cas de tous les fichier non ASCII,  alors il ne reste que de récupérer tous block de donnée entre 42 4D jusqu'au prochaine "}"  et convertir le code hex en byte puis les récupérer dans un Tstream et le reste n'est  pas très dure a faire, ben! pour la plupart des collègues.
 

Source

  • //********Notre Procedure de conversation modifier
  • //********Origine http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20438223.htm
  • procedure HexStr2Bmp(Astring:Ansistring);
  • var
  • BmpStream: TMemoryStream;
  • Bmp1: TBitmap;
  • i: Integer;
  • Mystr:string;
  • begin
  • showmessage('Size: '+floattostr((Length(Astring)/2))+' Octs');
  • if Length(Astring) mod 2 <> 0 then //**on teste si c'est une valide bitmap
  • Begin //** (if is a valide Hex Code bitmap)******
  • ShowMessage('Not Even');
  • Exit;
  • end;
  • BmpStream := TMemoryStream.Create;
  • //******on calcule le volume de notre stream (Stream size fom length code)
  • BmpStream.Size := Length(Astring) div 2;
  • for i := 0 to (Length(Astring) div 2)-1 do
  • begin
  • mystr:=Copy(Astring,((i+1)*2)-1,2);
  • mystr:=trim(Mystr);
  • //****assigne our byte in stream (on ajout nos byte calculer au steam)
  • PByteArray(BmpStream.Memory)[i] := StrToInt('$'+Mystr);
  • end;
  • //**Revenir au debut de stream
  • BmpStream.Position:=0;
  • //form1.edit1.text := IntToHex(PByteArray(BmpStream.Memory)[0],2); // ça vous donne 42=debut bitmap correct car 42,4D=B M
  • try
  • Bmp1 := TBitmap.Create;
  • BmpStream.Position := 0;
  • Bmp1.LoadFromStream(BmpStream);
  • FDFMREADER.Image1.canvas.Draw(0,0,Bmp1);
  • bmp1.SaveToFile('temps1.bmp');
  • finally
  • Bmp1.Free;
  • BmpStream.Free;
  • end;
  • //**************************************
  • procedure TFDFMREADER.ReadDFM(Filenamee:string);
  • label 1;
  • Var
  • ReadString:TStringList;
  • linee,wordd:string;
  • I, Llength:integer;
  • texte:Ansistring;
  • begin
  • //****je vai pas parler de creation car tous le monde vas le savoir un jour
  • ReadString:=TStringList.create;
  • //********************************************
  • ReadString.LoadFromFile(filenamee);
  • pb1.Max:=ReadString.Count;
  • i:=0;
  • //*****on vas chercher notre "Picture.Data = { " ou se trouve le Block de donnée de bitmap
  • //*****search "Picture.Data = { " the Block of bitmap hex code
  • while (i < ReadString.Count-1) do
  • begin
  • inc(i) ;
  • wordd:='';
  • linee:=readstring[i];
  • linee:=trim(linee);
  • wordd:=copy(linee,0,7);
  • if lowercase(wordd)='picture' then
  • while (linee <> 'end') do
  • begin
  • inc(i);
  • //**********to be freeeeeeeee*********
  • application.ProcessMessages;
  • linee:=readstring[i];
  • linee:=trim(linee);
  • Llength:=length(linee);
  • //****"{" it mean the end of Block data"
  • if copy(linee,Llength,1)='}' then
  • begin
  • linee:=copy(linee,0,Llength-1) ;
  • memo1.Lines.Add(linee);
  • pb1.Position:=i;
  • goto 1;
  • end else
  • memo1.Lines.Add(linee);
  • pb1.Position:=i;
  • end;
  • end;
  • 1: begin
  • texte:='';
  • Edit1.Text:=copy(memo1.lines.Text,24,24);
  • memo1.Lines.Text:=copy(memo1.lines.Text,25,length(memo1.Lines.Text));
  • //******** HEX CODE saint*****clean our result*********
  • for i:=0 to memo1.Lines.Count-1 do
  • texte:=texte+trim(memo1.Lines.Strings[i]);
  • HexStr2Bmp(texte); //**********Here the Procedure************
  • end;
  • end;
//********Notre Procedure de conversation modifier 
//********Origine http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20438223.htm
procedure HexStr2Bmp(Astring:Ansistring);
var
BmpStream: TMemoryStream;
Bmp1: TBitmap;
i: Integer;
Mystr:string;
begin
 showmessage('Size: '+floattostr((Length(Astring)/2))+' Octs');
if Length(Astring) mod 2 <> 0 then  //**on teste si c'est une valide bitmap
  Begin              //** (if is a valide Hex Code bitmap)******
  ShowMessage('Not Even');
  Exit;
  end;
BmpStream := TMemoryStream.Create;
//******on calcule le volume de notre stream (Stream size fom length code)
BmpStream.Size := Length(Astring) div 2;

for i := 0 to (Length(Astring) div 2)-1 do
 begin
 mystr:=Copy(Astring,((i+1)*2)-1,2);
 mystr:=trim(Mystr);
 //****assigne our byte in stream (on ajout nos byte calculer au steam)
PByteArray(BmpStream.Memory)[i] := StrToInt('$'+Mystr);

 end;
 //**Revenir au debut de stream
 BmpStream.Position:=0;
//form1.edit1.text := IntToHex(PByteArray(BmpStream.Memory)[0],2);  // ça vous donne 42=debut bitmap correct car 42,4D=B M
try
Bmp1 := TBitmap.Create;
BmpStream.Position := 0;
Bmp1.LoadFromStream(BmpStream);
FDFMREADER.Image1.canvas.Draw(0,0,Bmp1);
bmp1.SaveToFile('temps1.bmp');
finally
Bmp1.Free;
BmpStream.Free;
end;


//**************************************
procedure TFDFMREADER.ReadDFM(Filenamee:string);
label 1;
Var
ReadString:TStringList;
linee,wordd:string;
I, Llength:integer;
 texte:Ansistring;
begin
//****je vai pas parler de creation car tous le monde vas le savoir un jour
ReadString:=TStringList.create;
//********************************************
ReadString.LoadFromFile(filenamee);
pb1.Max:=ReadString.Count;
i:=0;

//*****on vas chercher notre "Picture.Data = { " ou se trouve le Block de donnée de bitmap
//*****search  "Picture.Data = { " the Block of bitmap hex code

while (i < ReadString.Count-1)  do
begin
 inc(i) ;
wordd:='';
linee:=readstring[i];
linee:=trim(linee);
wordd:=copy(linee,0,7);
if lowercase(wordd)='picture' then
while  (linee <> 'end') do
begin
 inc(i);
 //**********to be freeeeeeeee*********
 application.ProcessMessages;
linee:=readstring[i];
linee:=trim(linee);
Llength:=length(linee);
//****"{" it mean the end of Block data"
if copy(linee,Llength,1)='}' then
begin
linee:=copy(linee,0,Llength-1) ;
memo1.Lines.Add(linee);
 pb1.Position:=i;
 goto 1;
end else
memo1.Lines.Add(linee);
  pb1.Position:=i;

end;

end;

1: begin
texte:='';
Edit1.Text:=copy(memo1.lines.Text,24,24);
 memo1.Lines.Text:=copy(memo1.lines.Text,25,length(memo1.Lines.Text));
//******** HEX CODE saint*****clean our result*********
 for i:=0 to memo1.Lines.Count-1 do
texte:=texte+trim(memo1.Lines.Strings[i]);
HexStr2Bmp(texte); //**********Here the Procedure************
end;
end;

Conclusion

Conclusion tous personne désire de faire un composant pour u charger des fichier sans utiliser les ressources RES DCR de delphi directemnt dans votre Executaple pour faire des installers par exemple, c le moment de la même façon que Delphi enregistre les donnée de bitmap dans un fichier ASCII (.DFM) .

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • DFMR.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier295 octets
  • DFMR.resTélécharger ce fichier [Réservé aux membres club]876 octets
  • U_Apropos.dcuTélécharger ce fichier [Réservé aux membres club]4 889 octets
  • U_Apropos.dfmTélécharger ce fichier [Réservé aux membres club]44 585 octets
  • U_Apropos.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 279 octets
  • U_Operator.dcuTélécharger ce fichier [Réservé aux membres club]7 459 octets
  • U_Operator.ddpTélécharger ce fichier [Réservé aux membres club]51 octets
  • U_Operator.dfmTélécharger ce fichier [Réservé aux membres club]1 799 octets
  • U_Operator.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 880 octets
  •   DFM

Télécharger le zip

Historique

26 mars 2008 10:12:26 :
Modification pour évité d'être un menteur :D.
26 mars 2008 10:16:34 :
évite les bla bla de @WhiteHippo qui me suit par tous :D.

Commentaires et avis

signaler à un administrateur
Commentaire de matrix1 le 25/03/2008 16:55:38

Pas de commentaire ^o), c'est l'ennui qui reine ici

signaler à un administrateur
Commentaire de Nicolas___ le 25/03/2008 17:00:08

niveau Expert ...

signaler à un administrateur
Commentaire de WhiteHippo le 25/03/2008 23:02:10

"j'ai fais cette source juste en break time pour un ami qui a bc chercher sur le net et rien trouvé alors je pense que ça sera utile pour bc de gens."

Soit, ton ami n'a pas su trouvé sur le net; apparemment toi si...

Il aurait été normal de précisé d'où est tirée la principale fonction "HexStr2Bmp" de "U_operator.pas" même si tu l'as modifiée, ou plutôt adaptée dirons nous.
Je pense d'ailleurs que le niveau expert viens du fait de l'origine de la source (http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20438223.html)

Toujours repiquer les sources des autres pour ne les modifier que très légèrement, et surtout sans rien leur apporter de plus, faut effectivement pas s'étonner de l'ennui que cela entraine... Qui plus est en ce qui concerne des sources de 2002...

Cordialement.


signaler à un administrateur
Commentaire de matrix1 le 26/03/2008 09:54:34

@WhiteHippo alors d'après Ton l'URL

procedure TForm1.sbut_HexStr2BmpClick(Sender: TObject);
var
HexStr: String;
BmpStream: TMemoryStream;
Bmp1: TBitmap;
i: Integer;

begin
{copy and paste the Text from the memo into the HexStr below
don't forget to add a ' at the end}
HexStr := '424D76020000000000007600000028000000200000002000'+
'0000010004000000000000020000130B0000130B00001000'+
'00000000000004020400349A0400CC32FC0016820000B8C8'+
'0C00D3C2D2000C7600001E00000040A43B00D952360002B0'+
'F7000081BF00BFB0C80016550800405C0000D98200000000'+
'000000000000000000000000000000000000000000000000'+
'000000000000000000000000000000000000000000000000'+
'000000000000000000000000000000000000000000000000'+
'000000000000000000000000000000000100000000000000'+
'000000000000000012100000000000000000000000000001'+
'222100000000000000000000000000122222100000000000'+
'000000000000012222222100000000000000000000001222'+
'222210000000000000000000000122222221000000000000'+
'000000000012222222100000000000000011000001222222'+
'210000000000000000121000122222211000000000000000'+
'001221012222221000000000000000000112221222222100'+
'000000000000000001122222222210000000000000000000'+
'012222222221000000000000000000000122222222100000'+
'000000000000000001222222222100000000000000000000'+
'012222222222100000000000000000000122222222222100'+
'000000000000000001222222221110000000000000000000'+
'122222221100000000000000000000001222211100000000'+
'000000000000000012111000000000000000000000000000'+
'110000000000000000000000000000000000000000000000'+
'000000000000000000000000000000000000000000000000'+
'000000000000000000000000000000000000000000000000'+
'000000000000';
if Length(HexStr) mod 2 <> 0 then
  Begin
  ShowMessage('Not Even');
  Exit;
  end;
BmpStream := TMemoryStream.Create;
BmpStream.Size := Length(HexStr) div 2;
for i := 0 to (Length(HexStr) div 2)-1 do
  begin
  PByteArray(BmpStream.Memory)[i] := StrToInt('$'+Copy(HexStr,((i+1)*2)-1,2));
  end;
Label2.Caption := IntToHex(PByteArray(BmpStream.Memory)[0],2);
Bmp1 := TBitmap.Create;
BmpStream.Position := 0;
Bmp1.LoadFromStream(BmpStream);
Canvas.Draw(4,4,Bmp1);
Bmp1.Free;
BmpStream.Free;
end;


//*********************************************
mou je te dit que cette procedure ma donnée mon ami presque comme elle est en haut mais ça marchai pas avec les données de DFM c'est Normale par ce que il ne savais pas tous se que j'ai peut découvert : re..
bon! pour les DFM je pense que le delphi enregistre tous format que soit image jpeg icon ou tous autre format d'image en bitmap.
j'explique un peut plus,
si on utilisent un  Timage pour enregistrer un image par exemple ; les données de cette image sont enregistrer dans le ficher DFM (Fichier ASCII) dans le Block qui situe entre "Picture.Data = {" jusqu'au prochaine "}" sous format de chaine en Hexadécimale, et il écrit le type de format original dans les 24 premiers bites genre (075 7D..bal bla) pour l'identifier format original "TJPEG ou TBITMAP" ou cas ou vous voulez récupérer ce que vous appartiens bien sure :D!, tous format bitmap commence par 42 4D = M B c a dire format bitmap (pour tester et ouvrer une bitMap avec un éditeur Hex pour voire, d'ailleurs c le cas de tous les fichier non ASCII,  alors il ne reste que de récupérer tous block de donnée entre 42 4D jusqu'au prochaine "}"  et convertir le code hex en byte puis les récupérer dans un Tstream et le reste .

signaler à un administrateur
Commentaire de matrix1 le 26/03/2008 10:02:45

je te comprend @WhiteHippo, je c que tu m'aime pas c pour ça que tu te fiche de tous les explications ainsi de voire la source, tu tombe don le même piège, un programmeur qui tombe dans le même piège n'est pas un programmeur intelligents :D c'est une information que ma donnée un prof:D .

signaler à un administrateur
Commentaire de WhiteHippo le 26/03/2008 10:50:08

Matrix1
  "je c que tu m'aime pas"
  Aucun rapport, je ne juge pas les gens mais leur travail.
  "c pour ça que tu te fiche de tous les explications ainsi de voire la source"
  J'ai regardé ta source, c'est pour ça que j'ai mis un commentaire. Et, je persiste, ta source reprend une grosse portion du code situé à l'adresse donnée. Il suffit de regarder les similitudes quant aux noms des variables, au formattage du texte, etc....

Je te rappelerais donc le règlement :
"13 - On ne poste pas le travail d'autrui et on cite les auteurs pour les morceaux de code publics"

P.S. Rassures toi, désormais, je ne mettrais plus de commentaires sur tes sources.

Cordialement.
  

signaler à un administrateur
Commentaire de matrix1 le 26/03/2008 11:25:34

ah, non @WhiteHippo  ! j'accepte tous de toi, mais ça
<P.S. Rassures toi, désormais, je ne mettrais plus de commentaires sur tes sources.> c'est inacceptable!!!!!!!!
ça veux dire que t'es très faible, moi je veux plus tôt que tu télécharge toutes mes source et tu laisse a chaque source le commentaire que tu veux, impose toi soi un homme m***e! exprime toi comme tu veux, ne t'inquiète pas ni pour moi ni pour le reste, y compris Codes-Sources:D.

signaler à un administrateur
Commentaire de cirec le 27/03/2008 12:53:35 administrateur CS

Salut,

c'est peut être ton amis qui te la donnée mais ça n'empêche pas de remarquer les similitudes entre les deux codes et d'en déduire que ta procédure découle de sa grande soeur que l'on peut trouver à l'adresse indiqué par WhiteHippo.

On peut conserver ton code à condition de mettre un lien explicite dans la description et dans le code juste avant la procédure vers le lien d'origine ... au cas contraire je serai obligé de supprimer le code.

signaler à un administrateur
Commentaire de nethacker le 28/03/2008 10:47:33

C'est pas DFMreader ! c'est plutot dfm's icon reader !
ca serait bien si ta source affiche une form à partir d'un dfm ! voir même concevoir !

signaler à un administrateur
Commentaire de matrix1 le 29/03/2008 11:19:17

Pour @cirec,j'ai met le lien en Haut!alors tu veux quoi au juste???
Seriesement vous ete tous Aveugles, Lire SVP La conclusion.
//*********Conclusion**********
tous personne désire de faire un composant pour charger des fichier sans utiliser les ressources RES DCR de delphi directemnt dans votre Exécutable pour faire des installers par exemple, c le moment de la même façon que Delphi enregistre les donnée de bitmap dans un fichier ASCII (.DFM) .
//****************************************************
ce que je voulais dire c'est : qu'on peut stocker des donnée binaire en format ASCII et les récupérer qu'on ton veux,
j'explique:
on peut converire un fichier binaire en code ASCII puis le charger dans une variable; un Widestring par exemple, comme ça le fichier et dans votre executaple, bien sure vous allez ajouté le nom et l'extention du fichier ainsi vous pouvez crypter et compressés vos données, et quand vous avez besoin, vous récupérez votre fichier vous n'avez qu'a renversez la procedure.
c'été ça le but, Personnelement ça marche chez moi nikel, j'éssay just de compréssé mes donnée car la taille du fichier an code ASCII se double c normale, c le resultat de conversation.
personnellement quand j'ai vue tous le code de mon ami et apré que j'ai pue comprendre comment le delphi manipule les Fichier source DFM ça ma venu cette idée, chui pas bornée moi!! les Raws Scoket, Blocked no Blocked socket, AVR ARM, thread, Classe, composant, ASM  ^point, checksum, GPR Protocol, TStringstream, array of byte, Ortographe, les petit code de gens ...
ça ne me dit rien tous ça,
mais quoi faire avec !! ça , peut m'occupe, j'espère que je me suis fais comprendre, il faut avoir l'esprit un peut vaste.

Et pour mon voisin @nethacker, c vrai ce que ta dit , mais pour se que tu suggérais c possible, pour le moment je ne peut le faire qu'avec RemObject c a dire exécuté un script en runtime pour me facilté la tâche et pas vraiment complètement, car il faut connaitre tous le syntaxe de fichier DFM pour evitez les surprises d'un propreité ou évènement inattendue ;), car le delphi ne copie pas batement les proprité des composant en string, c un peut plus que ça.

Finalement les Mecs c un plaisir de changé des idées avec vous,c la seul chose qui me tien a posté des sources ici ;).

signaler à un administrateur
Commentaire de cirec le 31/03/2008 12:14:23 administrateur CS

"j'ai met le lien en Haut!alors tu veux quoi au juste"

C'est pourtant simple et claire j'ai écrit ceci :
"On peut conserver ton code à condition de mettre un lien explicite dans la description et dans le code juste avant la procédure vers le lien d'origine"

Il t'en manque un dans la description
Mais le plus important c'est celui dans le Zip
comme tu as fait dans la copie du code ^^



Sinon pour ton code ... on peut faire ça sans réécrire tout ...
Delphi a tout prévu pour manipuler ces données ...
De toute évidence tu ne connais pas :

procedure ObjectBinaryToText(Input, Output: TStream); overload;
procedure ObjectTextToBinary(Input, Output: TStream); overload;



Je te conseil de regarder la source de Caribensila

http://www.delphifr.com/code.aspx?ID=38197

signaler à un administrateur
Commentaire de matrix1 le 01/04/2008 10:50:50

@cirec je connais ces procédures, mais c'été pas le but.

signaler à un administrateur
Commentaire de cirec le 01/04/2008 11:25:01 administrateur CS

ah bon ... pourtant ça fait exactement la même chose que ton code (même résultat) mais la grande différence c'est que ça n'est pas limité à un seul format tu peux tout récupérer  :(Icônes, Images, Images Listes et plus encore).

signaler à un administrateur
Commentaire de matrix1 le 02/04/2008 15:50:36

je c tous ça, et j'ai éssayé d'usé ces procedures bien plus avant mais j'ai pas réussie a utiliser car ça planté bc et puisque j'ai pas eu le temps de continué alors j'ai laissé tombé , et pour le but lire la conclusion et fais marché ton imagination il bc a faire avec et n'éssay pas de pensé a les Resources ;).
bon courage.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

valeur hexadecimal d'un nombre [ par fabiin ] Salut !Comment faut-il fairepour connaite la valeur hexadecimal d'un nombre ???Merci par avance@+Fabs ASCII [ par Shadow ] salut je veux utiliser les valeurs ascii du clavier comment ?exemple quand j appuies sur echap ça quitte le programme Code ASCII -> Son caractère correspondant [ par Fabiin ] Salut !Quel fonction permet de passer du code ASCII en sont caractère correspondnat ???l'inverse de Ord()Merci par avance@+Fabs dessin sur un bitmap [ par jlg75 ] J'ai commencé un petit prog de dessin pour mes débuts en DELPHI.Je dessine sur un bitmap (feuille blanche pour l'instant),chargé dans une TImage. J'ut Convertir un bitmap en icone [ par sebastienbro ] J'aimerai savoir comment convertir un bitmap, contenu dans une Timage, en icone Convetir une imag en Bitmap [ par sebastienbro ] Je veux convertirune image en ICO, mais il me met une erreur : Image icône incorrectAidez moi !!!!! COMMENT FAIRE UNE BOUCLE FOR ? [ par LeKamé ] salut !!jutilise delphi 5 !!et je voudrait savoir comment on peut faire un boucle qui traite sur la valeur asciid'une phraseexemple: je déclare une va Valeur ASCII (delphi) [ par costello ] Comment obtenir le N° correspondant à un caractère ASCII ? =&gt; contraire de la fonction ' chr (x) '=&gt; en Q-Basic c'était ' ASC (x) 'merci de l'ai form et dll [ par somewhere ] est il possible de créé une dll contenant une forme mais avec 3 fichiers:madll.dpr,unit1.pas,unit1.dfmde maniere a ajouter simplement des composants a Bitmap, tableau de stockage .... [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a


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,530 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é.