Der Compactor - oder wie man Diskettenplatz spart

Anwender der Malprogramme Doodle, Degas, NEOchrome oder ähnlicher Produkte kennen das Problem: Der Diskettenspeicherbedarf der hochauflösenden Atari-ST-Bilder ist groß - mindestens 32 000 Bytes. Auf einer Diskette haben damit nicht mehr als zehn Bilder Platz. Nun gibt es mit „COMPACTOR" ein Hilfsprogramm: Durch die Anwendung eines entsprechenden Algorithmus gelang es, den Speicherplatzbedarf drastisch zu reduzieren. Ein Bericht von Ulrich Schaumburg, dem Autor des Programms.

Das Programm, das ich mit dem treffenden Namen COMPACTOR bezeichnet habe, macht es nun möglich, statt wie bisher nur zehn jetzt etwa 30 Grafikbilder auf einer einseitig formatierten Diskette unterzubringen. Einige Erläuterungen zur Funktion des Programmkerns:

Alle Computer-Bilder haben die Gemeinsamkeit, daß mit an Sicherheit grenzender Wahrscheinlichkeit öfters ein Bytewert mehrmals hintereinander, also in einer Reihe, vorkommen wird. Wenn diese Datenstruktur in einem Bild oft genug vorkommt, bietet es sich an, diese Gegebenheit für eine effektive Kürzung des benötigten Speicherplatzes auszunutzen.

Man muß also nur den Speicherbereich des Bildes auf Bytewertwiederholungen untersuchen. Stößt das Programm dabei auf eine Folge von mehr als drei gleichen Bytes, lohnt es sich, diese in der folgenden Struktur zu verschlüsseln:

  1. Sign-Byte
  2. Anzahl der Wiederholungen
  3. Tatsächlicher Bytewert

Das Sign-Byte stellt hierbei ein signifikantes Byte dar, das vom Programmteil, der das Bild später wieder 'auseinanderzieht' (sonst hätte das ganze ja keinen Sinn!), als Signal für eine nun folgende Verschlüsselung interpretiert wird.

Um die Effektivität des Algorithmus auf die Spitze zu treiben, wird dieses Sign-Byte jedoch nicht willkürlich festgelegt, sondern man sucht gezielt nach einem Byte-Wert, der im ursprünglichen Bild am seltensten (am besten: gar nicht) vorkommt.

Die praktische Umsetzung dieser theoretischen Überlegungen führt zu einer Komprimierung der Bilder um durchschnittlich mehr als 60 Prozent. Damit lohnt sich der Einsatz des Programmes für jeden, der seine Bilder auf eine Diskette zur späteren Verwendung archivieren möchte. Es ist schon ein riesiger Unterschied, wenn etwa statt ursprünglichen 32 034 Bytes eines Degas erstellten Bildes nur noch 7904 Bytes zu Buche schlagen. Bei Menschen mit einem sehr ausgeprägten Bedürfnis, die in großer Zahl erstellten Meisterwerke der Nachwelt zu erhalten, bedeutet der Einsatz des Programmes nicht nur weit mehr Speicherplatz auf der Diskette, sondern auch mehr Geld im Sparstrumpf - wird man doch für eine Qualitätsdiskette mit immerhin rund zehn Mark zur Kasse gebeten.

Einige Erläuterungen zum praktischen Umgang mit dem Programm COMPACTOR:
Beim Starten des Programmes der Benutzer gefragt, ob er ein komprimieren oder ein zuvor komprimiertes Bild wieder auseinanderziehen will.

Das Ergebnis

1. Komprimieren:
Es erscheint eine File-Selector-Box, der Benutzer teilt dem Programm den Namen des zu bearbeitenden Bildes mit. Daraufhin wird das Bild nachgeladen und komprimiert. Um diesen Vorgang optisch zu verdeutlichen, wird das anzeigte Bild dabei invertiert.

Danach wird gefragt, ob das gekürzte Bild auch wirklich abgespeichert werden soll. Nun hat der Benutzer die Gelegenheit, die richtige Diskette einzulegen. Falls das Bild tatsächlich abgespeichert wurde, befindet sich auf der Diskette dann das gekürzte Bild mit dem alten Namen, bei dem jedoch die Extension PIC, D00 oder Pl? durch CMP (was eine Abkürzung für compacted ist) ersetzt wurde.

Auseinanderziehen:
Auch hier erscheint eine File-Selector-Box. Der Benutzer teilt dem Programm mit, welche Datei wieder in ein vollständiges und mit dem entsprechenden Malprogramm zu bearbeitendes Bild umgewandelt werden soll. der Benutzer eine solche Datei ausgewählt hat, wird diese in einen sicheren Speicherbereich geladen und dort als sichtbares Bild auf den Schirm 'projiziert'.

Jetzt wird dem Benutzer die Gelegenheit gegeben, die richtige Diskette einzulegen und das Bild abzuspeichern oder den ganzen Vorgang wieder rückgängig zu machen.
Anschließend fängt die gesamte Prozedur wieder von vorne an.

Fast könnte man sich diese Erklärungen sparen, denn das Programm ist sehr benutzerfreundlich, da es voll in GEM eingebunden ist.

Noch zwei weitere Aspekte des Programmes COMPACTOR sollten von Interesse sein:
Erstens wird bei dieser Anwendung einmal auf deutliche Weise optisch dargestellt, wie schnell die Programmiersprache 'C' insbesondere auf dem Atari ST ist. - Dies wird vielleicht den einen oder anderen, der bisher seine Zweifel an dieser sehr eleganten Sprache hatte, dazu bringen, sich näher mit 'C auseinanderzusetzen.

Der zweite Aspekt richtet sich eher an diejenigen, die sich schon etwas mehr mit 'C' angefreundet haben: Für den C-Programmierer stellt jedes 'fremde', gut strukturierte C-Programm (wie das hier behandelte) eine Fundgrube neuer Ideen und Problemlösungen dar. COMPACTOR enthält etwa eine komplette und mustergültige Lösung für den Umgang mit der File-Select-Dialogbox, die Behandlung des Datei-Pfadnamens deckt praktisch alle Eventualitäten ab. Auch der Umgang mit dem 'C'-Sprachelement 'Zeiger' wird hier sehr ausführlich dargestellt. So dürfte etwa eine allgemeingültige Funktion zum extrem schnellen Löschen des Bildschirminhaltes von Interesse sein, etc., etc. ...

Sie sehen also: Das Programm COMPACTOR richtet sich an das gesamte Spektrum der Leserschaft. - An die reinen Anwender, die ihr Augenmerk auf den ökonomischen Aspekt richten, an die interessierten Hobbyisten, die die Möglichkeiten ihres Ataris voll ausnutzen wollen, und an ausgebuffte Freaks, die aus einem solchen Programm vielleicht nützliche Anregungen schöpfen. Wer weiß, vielleicht entschließt sich Tom Hudson, der Degas-Autor, die Funktion von COMPACTOR gleich in eine neue, verbesserte Version seines berühmten Programmes einzubauen.


Ulrich Schaumburg
Aus: ST-Computer 12 / 1986, Seite 36

Links

Copyright-Bestimmungen: siehe Über diese Seite