Board logo
Faire une image .pgm de 256 par 256 avec des rayures verticales

ftbass - 28/05/2004 à 01:21

chti programme écrit pour tester mon projet :

code:

--//////////////////////////////////////////////////////////--
--          Code écrit par Julien COIGNET            --
--      afin de vérifier le programme de compression      --
--//////////////////////////////////////////////////////////--


with text_io; use text_io;
with ada.integer_Text_Io; use ada.integer_Text_Io;
with sequential_io;

procedure creationImage is

--////////////////////////////////////////////////////////////////////////--
--                                    Paquetages                          --
--////////////////////////////////////////////////////////////////////////--

package fichier_car is new sequential_IO(character); use fichier_car;

--////////////////////////////////////////////////////////////////////////--
--                                    Types                              --
--////////////////////////////////////////////////////////////////////////--

-- Type Entete: Vecteur qui contient l'entete du fichier image
type TypeEntete is array (0..42) of character;

-- Type Matrice: Matrice qui reçoit le contenu d'une image de 256 par 256 pixels
type TypeMatrice is array (0..255, 0..255) of character;

--////////////////////////////////////////////////////////////////////////--
--                  Programme principal                  --
--////////////////////////////////////////////////////////////////////////--

Fichier : fichier_car.file_type;
Matrice : typeMatrice;
entete : typeEntete;
compteur : integer := 0;

begin
 
 create(Fichier, name => "img.pgm");

 entete(0..1) := "P5";
 entete(2) := character'val(10);
 entete(3..29) := "# Created by Julien COIGNET";
 entete(30) := character'val(10);
 entete(31..37) := "256 256";
 entete(38) := character'val(10);
 entete(39..41) := "255";
 entete(42) := character'val(10);

 for i in 0..42 loop
   write(fichier, entete(i));
 end loop;

 for i in 0..255 loop
   for j in 0..255 loop
     compteur := compteur + 1;
     if compteur <= 2 then
       write(fichier, character'val(0));
     else
       write(fichier, character'val(255));
     end if;
     if compteur = 4 then
       compteur := 0;
     end if;
   end loop;
 end loop;

 close(fichier);
 
 put("Image creee avec succes.");

end creationImage;


On peut y voir comment est faite l'entete d'un .pgm...