Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2508 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Soucis d'écriture d'un fichier BITMAP [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Soucis d'écriture d'un fichier BITMAP [RESOLU]

n°753608
LeMakisar
Posté le 05-06-2004 à 23:35:31  profilanswer
 

Alors voila, tout semble fonctionner, le fichier est lisible, ca ressemble à ce que je veux, sauf que toutes les valeurs entre 123 et 160 partent en sucette ...
j'ai un FileWriter f et je fais f.write(ma valeur)
Et qd cette valeur est entre 123 et 160, dans le fichier ca me met systématiquement 63 :heink:
 
Bref je capte pas tout ... si vous pouvez m'éclairer :)


Message édité par LeMakisar le 06-06-2004 à 09:39:54
mood
Publicité
Posté le 05-06-2004 à 23:35:31  profilanswer
 

n°753648
darklord
You're welcome
Posté le 06-06-2004 à 00:43:34  profilanswer
 

code?

n°753796
LeMakisar
Posté le 06-06-2004 à 08:57:24  profilanswer
 


 

Code :
  1. FileWriter f=new FileWriter(chemin);
  2. int taille=largeur*hauteur;
  3. byte[] b;
  4. f.write("BM" );
  5. b=intToDWord(taille*3+54);
  6. for(int j=0;j<4;j++) {
  7.         f.write(b[j]);
  8. }
  9. b=intToDWord(0);
  10. for(int j=0;j<4;j++) {
  11.         f.write(b[j]);
  12. }
  13. b=intToDWord(54);
  14. for(int j=0;j<4;j++) {
  15.         f.write(b[j]);
  16. }
  17. b=intToDWord(40);
  18. for(int j=0;j<4;j++) {
  19. f.write(b[j]);
  20. }
  21. b=intToDWord(largeur);
  22. for(int j=0;j<4;j++) {
  23. f.write(b[j]);
  24. }
  25. b=intToDWord(hauteur);
  26. for(int j=0;j<4;j++) {
  27. f.write(b[j]);
  28. }
  29. b=intToWord(1);
  30. for(int j=0;j<2;j++) {
  31. f.write(b[j]);
  32. }
  33. b=intToWord(24);
  34. for(int j=0;j<2;j++) {
  35. f.write(b[j]);
  36. }
  37. b=intToDWord(0);
  38. for(int j=0;j<4;j++) {
  39. f.write(b[j]);
  40. }
  41. b=intToDWord(0);
  42. for(int j=0;j<4;j++) {
  43. f.write(b[j]);
  44. }
  45. b=intToDWord(10000);
  46. for(int j=0;j<4;j++) {
  47. f.write(b[j]);
  48. }
  49. b=intToDWord(10000);
  50. for(int j=0;j<4;j++) {
  51. f.write(b[j]);
  52. }
  53. b=intToDWord(0);
  54. for(int j=0;j<4;j++) {
  55. f.write(b[j]);
  56. }
  57. b=intToDWord(0);
  58. for(int j=0;j<4;j++) {
  59. f.write(b[j]);
  60. }
  61. Color c;
  62. float zoom=inter.AccesZoneImage().AccesZoom();
  63. for(int k=hauteur-1;k>=0;k--) {
  64.         for(int j=0;j<largeur;j++) {
  65.         c=texture_actuelle.couleur(j/zoom,k/zoom);
  66.          f.write(c.getBlue());
  67.          f.write(c.getGreen());
  68.          f.write(c.getRed());
  69.         }
  70. }
  71. f.close();


 
Voila bon c'est pas très beau mais le but du jeu était que ca devait être fonctionnel rapidement :D
La méthode couleur(x,y) ca calcule la couleur d'un pixel (ce sont des textures procédurales), et mes getRed, getGreen et getBlue renvoient la bonne valeur, j'ai vérifié.
Le fichier bitmap se crée bien mais c'est au niveau des couleurs que ca fait un peu des trucs bizarres.
 
Je me disais que ca pouvais être une histoire d'entier signé/non signé mais je vois pas ...
 
j'oubliais, les méthodes inttoDWord et inttoWord renvoient un tableau de 4 bytes et un tableau de 2 bytes, mais bon je suppose que j'avais pas besoin de le dire :)


Message édité par LeMakisar le 06-06-2004 à 09:02:35
n°753800
LeMakisar
Posté le 06-06-2004 à 09:16:02  profilanswer
 

au fait, j'ai testé un f.write(123) usque f.write(159) ben ca m'écrit 63 dans le fichier, donc ca viendrait de al valeur qu'on donne au write()
 
Bon je tente d'utiliser un FileOutputStream à la place d'un FileWriter c'est plus adapté.
je vous tiens au courant


Message édité par LeMakisar le 06-06-2004 à 09:32:52
n°753804
LeMakisar
Posté le 06-06-2004 à 09:38:57  profilanswer
 

Voila j'ai rien dit, problem solved :D
 
pour ceux que ca intéresse :

Code :
  1. FileOutputStream f=new FileOutputStream(chemin);
  2.     int taille=largeur*hauteur;
  3.     f.write('B');     //type de fichiers : Bitmap donc BM
  4.     f.write('M');
  5.     f.write(intToDWord(taille*3+54));  //taille du fichier en octets
  6.     f.write(intToDWord(0));   //reservé, doit être mis à 0
  7.     f.write(intToDWord(54));   //offset (début de l'image)
  8.     f.write(intToDWord(40));    //taille de l'entête de l'image (40 donc 28 en hexa)
  9.     f.write(intToDWord(largeur));   //largeur de l'image en pixels
  10.     f.write(intToDWord(hauteur));  //hauteur de l'image en pixels
  11.     f.write(intToWord(1));    //nombre de plans sur 2 octets
  12.     f.write(intToWord(24));   //profondeur de codage de la couleur sur 2 octets
  13.     f.write(intToDWord(0));   //méthode de compression (0 : non compressée) sur 4 octets
  14.     f.write(intToDWord(0));   //taille totale de l'image en octets (sur 4 octets)
  15.     f.write(intToDWord(10000));  //résolution en pixels/m horizontale sur 4 octets
  16.     f.write(intToDWord(10000));  //résolution en pixels/m verticale sur 4 octets
  17.     f.write(intToDWord(0));   //nombre de pixels de la palette sur 4 octets
  18.     f.write(intToDWord(0));   //nombre de pixels importants de la palette sur 4 octets (0 pour tous)
  19.     Color c;
  20.     float zoom=inter.AccesZoneImage().AccesZoom();
  21.     for(int k=hauteur-1;k>=0;k--) {  //affichage de l'image, à l'envers puisque c'est du bitmap
  22.      for(int j=0;j<largeur;j++) {
  23.       c=texture_actuelle.couleur(j/zoom,k/zoom);
  24.       f.write((byte) c.getBlue());
  25.       f.write((byte) c.getGreen());
  26.       f.write((byte) c.getRed());
  27.      }
  28.     }
  29.     f.close();


Message édité par LeMakisar le 06-06-2004 à 09:39:15
n°755484
veryfree
Posté le 07-06-2004 à 21:31:13  profilanswer
 

ca ressemble a quoi a la fin [:dawa]

n°755489
FarookFree​man
Posté le 07-06-2004 à 21:37:28  profilanswer
 

veryfree a écrit :

ca ressemble a quoi a la fin [:dawa]


 
petit curieux oportuniste  ;)

n°755493
veryfree
Posté le 07-06-2004 à 21:43:45  profilanswer
 

Farook stai le prenom de freddie mercury ca, jme trompe?
 
 
edit : \o/


Message édité par veryfree le 07-06-2004 à 21:44:12
n°755517
LeMakisar
Posté le 07-06-2004 à 22:07:39  profilanswer
 

ca ressemble à une texture procédurale enregistrée au format bitmap :)

n°755642
FarookFree​man
Posté le 07-06-2004 à 23:45:47  profilanswer
 

veryfree a écrit :

Farook stai le prenom de freddie mercury ca, jme trompe?
 
 
edit : \o/


 
Exact : un connaisseur. Je vois très bien j'apprécie.
Remarque, c'est aussi le prénom d'un de mes prof.

mood
Publicité
Posté le 07-06-2004 à 23:45:47  profilanswer
 

n°755650
veryfree
Posté le 07-06-2004 à 23:56:38  profilanswer
 

ca a bercé mon adolescence tout ca :'(

n°755825
FarookFree​man
Posté le 08-06-2004 à 09:49:12  profilanswer
 

veryfree a écrit :

ca a bercé mon adolescence tout ca :'(


 
Moi aussi.
C'était un super groupe. Il reste toujours le groupe culte pour moi.
Du coup, je garde ce prénom à la mémoire de Freddy et du groupe de manière plus générale.  :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Soucis d'écriture d'un fichier BITMAP [RESOLU]

 

Sujets relatifs
[Résolu]méhode à la volée <- classe anonyme[C/C++] pb d'alignement inférieur à 32bits (resolu)
Realiser une Applet qui envoi un fichier en HTTP à un serveur WEBrenommer un fichier avec url
[C++ Builder 6] Includer le fichier afxwin.hC# + BDD Access = erreur groupe de travail [résolu]
créer un fichier d'aide pour soft windowds SVPeval() & affectation [Résolu]
Ecrire par dessus un fichier en javascript?soucis avec un Service Web
Plus de sujets relatifs à : Soucis d'écriture d'un fichier BITMAP [RESOLU]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR