Rhetos
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 9 Ω


Fortran90 Programme Pixelgrafik


! Ein Fortran90-Programm zur Erzeugung textbasierter Bilder


Basiswissen


Die Zeilen, die mit einem Ausrufezeichen (!) beginnen, sind reine Kommentarzeilen. Hier steht der Quelltext für ein copy-and-paste.

Quellcode


! Gunter Heim
! 17. Oktober 2017

! Dieses Program erzeugt eine Portable Greymap-Datei, kurz pgm.
! Das Besondere: Bilder werden als lesbarer ASCII-Text kodiert.
! Der Name der Bilddatei ist einfach nur "bild", ohne Erweiterung.
! PGM-Dateien werden von vielen Viewern erkannt.
! PGM-Dateien können mit jedem Texteditor bearbeitet werden.
! PGM-Dateien haben den Nachteil, dass sie viel Speicher brauchen.

! PGM-Dateien fangen immer mit drei Kopfzeilen an.
! Kopfzeile 1 enthält: "P2" (meint: Greymap-ASCII)
! Kopfzeile 2 enthält: "20 20", spezifiert Zeilen und Spaltenzahl.
! Kopfzeile 3 enthält: "20", spezifiziert Anzahl der Graustufen.
! Danach kommt eine Zahlenliste, die für jedes Pixel den Grauwert angibt.
! Kleine Werte geben dunkle Pixel, hohe Werte helle Pixel.

! Zuerst werden die Variablen deklariert

integer,dimension (20,20) :: k ! 2D-Array für die Grauwerte
integer :: zeile ! Zähler für äußere Schleife
integer :: spalte ! Zähler für innere Schleife

! Der open Befehl öffnet die Datei "bild" zum schreiben.
! UNIT gibt dieser geöffneten Datei den Wert 1, für spätere Ansprachen.
! FILE nennt den Dateinamen
! Formatted meint Textbasiert (im Gegensatz zu Binary)
! Status gibt an, ob Datei überschrieben werde darf.
! Action sagt, was mit der Datei zu tun erlaubt ist.

open (UNIT=1,FILE="bild",FORM="Formatted",STATUS="replace",ACTION="write")

! Jetzt werden die drei Kopfzeilen der Bilddatei erzeugt.
! Zum Schreiben in Dateien geht nur WRITE, nicht PRINT.
! UNIT sagt, welche Datei genommen werden soll.
! FMT=200 sagt, dass Format-label 200 gelten soll.

WRITE (UNIT=1,FMT=100) "P2"
WRITE (UNIT=1,FMT=100) "20 20"
WRITE (UNIT=1,FMT=100) "20"

! Es folgen zwei Schleifen, verschachtelt.
! Die äußere Schleife steht für die Zeilennummer.
! Die innere Schleife steht für die Spaltennummer.
! Die Schleifen erzeugen die Graustufen für das Bild.
! In dem Write-Befehl wird ADVANCE='no' spefifiziert.
! Das unterdrückt den Zeilenumbruch bei den Grauwerten.

do zeile=1,20,1
do spalte=1,20,1
WRITE (UNIT=1,FMT=200,ADVANCE='no') spalte
end do
end do

! Es kommen jetzt die zwei Format-labels.
! Das Label 100 ist für die Formatierung der drei Kopfzeilen.
! Das A steht dafür, dass die Ausgabe ein Charakter-String ist.
! Das Label 200 ist für die Formatierung der Grauwerte.
! I steht für Integer-Werte, 3 für die Breite eines jeden Wertes.

100 format (A)
200 format (I3)

! Zum Schluss wird die geöffnete Datei "bild" wieder geschlossen.
! Beachte, dass die Datei über ihre UNIT-Nummer angesprochen wird:

close (UNIT=1)

end program portable_greymapSiehe auch