Pascal Grauwerte auslesen

Hallo,

Hab ein Problem. Ist ziemlich wichtig. Muss morgen ein Vortrag über die Fraktale Dimension bei diversen Vorgängen halten. Meine Hauptaufgabe bestand darin ein Programm zu schreiben das das Bild in Bezug auf die fraktale Dimension auswertet. Das hab ich auch soweit fertig und klappt alles wunderbar, leider hab ich grade gemerkt das ich ganz vergessen habe wie man ein Bild in Pascal einliest. Hab da komplett gar keine Ahnung. Kann mir das bitte jemand erklären. Hab mich mal informiert und da bin ich drauf gestoßen das man bei Bitmap Bildern den VGA Teil (?) auslesen kann. Es geht hier nur um Grauwerte.
Also kann mir vllt jemand den Befehl für Pascal schreiben ein Bild auszulesen. Wäre echt super nett.

MfG Olli

Hallo Olli,

ganz so einfach ist es leider nicht. Früher hat man den direkt den (VGA) Grafik-Speicher ausgelesen, ich denke, das hast du gemeint. Im Zeitalter grafischer Oberflächen und unterschiedlichster Grafik-Chips ist das aber nicht mehr die Methode der Wahl. Im Prinzip muss die Bilddatei zum Lesen im Binär-Modus geöffnet werden (sonst gehen CR- und LF-Bytes verloren) und dann kann per read() Byte für Byte herausgelesen werden. Der Rest hängt allerdings vom (Bitmap-)Grafikformat ab, da gibt es relativ einfache (BMP), ein paar mittlere (PCX) und sehr komplexe (PNG, TIFF, JPG). Typischerweise solltest du nach einer Bibliothek für dein Bildformat suchen und gucken, wie deren Schnittstelle beschrieben ist.
Für Python gibt es da die Python Image Library, bei Pascal weiß ich auf Anhieb leider keine…

Grüße, guidot

Hallo Guidot,

Früher hat man den
direkt den (VGA) Grafik-Speicher ausgelesen, ich denke, das
hast du gemeint.

ich weiß es nicht mehr genau. „Früher“ wo die PCs anfingen zunehmend Grafikkarten zu haben usw. mußte man in basic irgendwie aus dem Schwarz-Weiß-Modus umschalten.
Dann waren die einzelnen Bildpunkte in drei Bereiche a 2000 Byte auslesbar bzw. setzbar.

Der Rest hängt allerdings vom (Bitmap-)Grafikformat
ab, da gibt es relativ einfache (BMP), ein paar mittlere (PCX)
und sehr komplexe (PNG, TIFF, JPG).

Für mich sinf jpg keine bmp-Dateien. bmp sind Verlustfrei und sehr groß weil sie jedes Bit einzeln spreichern. Jpgs funktionieren anders und sind kleiner.

In einem einfachen Fall sind pro Pixel auf dem Bildschirm ein byte gespeichert.
3 Bit, 0-7 = 8 Farben
1 Bit, 0/1 = Leuchtend/nicht leuchtend
1 Bit, 0/1 = invers/nicht invers
1 Bit, 0/1 = Bildpunkt gesetzt/ nicht gesetzt
2 Bits weiß ich nicht mehr, bedeuteten wohl auch bas, achja, eines war fürs Blinken *glaub*

Und so eine bmp-Datei hat *glaub* immer den gleichen Aufbau, vorne ein Vorspann mit Inforamtionen. darin steht auch ab wann die reinen Bitinformationen in der datei stehen, nach dem Vorspann stehen dann die reinen Bitinformationen.

Typischerweise solltest du
nach einer Bibliothek für dein Bildformat suchen und gucken,
wie deren Schnittstelle beschrieben ist.

Vielleicht meinst du sowas:

http://www.wotsit.org/

Für Python gibt es da die Python Image Library, bei Pascal
weiß ich auf Anhieb leider keine…

k.A., kenne Pascal Null.

Gruß
Reinhard

Hallo

leider hab ich grade gemerkt das ich ganz vergessen
habe wie man ein Bild in Pascal einliest.

In Delphi gibt es die Klasse TBitmap:
mit LoadFromFile kannst du eine .BMP-Datei einlesen.
mit Pixels[x,y] erhälst du die Farbwerte der einzelnen Pixels

var bmp:TBitmap;
 x,y:integer;
 Pixel:TColor;
begin
 bmp:=TBitmap.Create;
 bmp.LoadFromFile('MyImage.bmp');
 for y:=0 to bmp.Height-1 do
 for x:=0 to bmp.Width-1 do
 Pixel:=bmp.canvas.pixels[x,y];
 bmp.free;
end; 

JK