"4PCX092.KCC" - Konvertierung von PCX-Bildern in das KC-Format
von Ralf Kästner
Durch die Verbreitung der CLIPART-Disketten über die KC-News stehen mittlerweile den Clubmitgliedern eine ganze Menge an mehr oder weniger brauchbaren Bildern für den KC zur Verfügung. Es wurde deshalb höchste Zeit, diese Thematik mal zusammenfassend darzustellen, womit ich mein Versprechen vom diesjährigen Treffen erfüllen möchte. Es soll und kann keine Bedienungsanleitung werden, vielmehr möchte ich Zusammenhänge deutlich machen, um Lust und nicht Frust beim Konvertieren entstehen zu lassen und am Ende ein ansprechendes Bild auf dem KC erscheint.
Das originale PCX-Programm 4PCX090.KCC von Holger Joedicke befand sich (leider etwas versteckt) im DIASHOW.PMA-Archiv auf der KC-News Beilagediskette 4/94. Dieses sehr gute Toolprogramm "ist verantwortlich" für die ganze Bilderflut im PIP- bzw. HIP/HIF-Bildformat. Es ermöglichte erstmals auf dem KC den Zugriff auf eines der bekanntesten PC-Formate für die Speicherung von Bitmapgrafikdateien. Vor allem im DTP-Bereich kann nahezu jedes PC-Programm das PCX-Format lesen, auch auf dem Amiga ist es nicht unbekannt.
PCX-Format
Auf den genauen Dateiaufbau möchte ich hier verzichten, es gibt aber einige wichtige Punkte, die man wissen muß, um das Ergebnis der Konvertierung vorauszuplanen bzw. überhaupt zu verstehen. Das PCX-Format war einer der ersten Standards für Pixelgrafiken überhaupt. Es ist ein eher hardwareorientiertes Format, da im Wesentlichen ein zeilenweiser Speicherabzug des Grafikkarteninhalts (vergleichbar mit dem IRM im KC) der im PC verwendeten Grafikkarte in eine Datei geschrieben wird.
Mit der Entwicklung der Hardware und damit der Grafikkarten auf dem PC durchlief das PCX-Format ebenfalls eine Entwicklung. In der Literatur finden sich teilweise widersprüchliche Angaben, alles was jetzt folgt, habe ich aus mehreren Quellen zusammengetragen bzw. durch Analyse des Hexdumps von PCX-Dateien verschiedener Programme herausgefunden und muß nicht 100%ig stimmen. Benutzt werden heute die Versionen 2.5, 2.8 mit oder ohne Palette und die Version 3.0.
In Version 2.5 sind ausschließlich zweifarbige Bilder, in Version 2.8 Bilder mit bis zu 16 Farben und in Version 3.0 Bilder mit bis zu 16,7 Millionen Farben gespeichert. Die Versionsnummern deuten auf die verwendete Grafikkarte von Hercules (2.5) über CGA/EGA/VGA (2.8) zu SVGA (3.0) hin, welche bei Speicherung der Datei vorhanden war. Die Versionsnummer bestimmt dabei die Anzahl der maximal möglichen Farben, weniger ist natürlich erlaubt, es gibt also z. B. auch Bilder in der Version 3.0, welche nur 2 Farben enthalten.
Für die Konvertierung der Bilder auf dem KC kommen nur Bilder in Betracht, welche maximal 16 Farben enthalten. Um die Datenmenge der Datei zu reduzieren, enthält eine derartige PCX-Datei die Informationen zu den einzelnen Bildpunkten getrennt in 2 Teilen. Im ersten Teil werden die maximal 16 Farben in einer Tabelle (Farbpalette) nach einem festgelegten Schema zusammengefaßt. Den zweiten Teil bilden jetzt nur noch Bezüge (Indizes) zwischen jeweiligem Bildpunkt und seiner Farbe (Tabellenposition) in der Tabelle.
Beispiel:
- die Farbe weiß (RGB-Werte 255/255/255) steht an Position 15 der Tabelle
- jeder weiße Bildpunkt wird jetzt mit dem Wert 1111B=0FH=15 dez. im zweiten Teil abgelegt und erfordert dadurch bei 16 möglichen Farben nur noch maximal 4 Bit für seine eindeutige Darstellung.
Der Dateiaufbau bzw. die Bezüge zwischen Farben und Indizes sind nun in den den o. g. Versionen der PCX-Dateien unterschiedlich geregelt. Sehr wichtig an dieser Stelle ist aber die Erkenntnis, daß verschiedenfarbige Bildpunkte unterschiedliche Indizes hervorrufen, gleichfarbige Bildpunkte gleiche Indizes - die Indizes allein aber keinen Rückschluß auf die wirklich darzustellende Farbe erlauben, denn die steht nur in der Farbtabelle bzw. -palette!!! Bei sw/wß Bildern ist keine Palette notwendig, hier gibt es ja nur 2 "Farbinformationen", was sich dann direkt im Indizesbereich speichern läßt, eine 0 entspricht einem nichtgesetzten, eine 1 einem gesetzten Punkt, es ist also nur noch 1 Bit zur Aufnahme der Bildpunktinformation notwendig.
Was macht 4PCX092.KCC
Am einfachsten ist es bei den zweifarbigen Bildern, die Bildinformationen lassen sich 1:1 in den IRM des KC schreiben und das Ergebnis entspricht damit dem originalen PCX-Bild. Schwieriger wird es, wenn nun die Farben ins Spiel kommen, da man auf dem PC nicht, wie bei uns, auf feste vorgegebene Farben angewiesen ist. Bereits die EGA-Karten konnten zwar auch nur 16 Farben gleichzeitig auf dem Bildschirm anzeigen, allerdings aus einer Auswahl von 64 möglichen Farben, bei VGA waren in den Anfangszeiten 256 Bildschirmfarben aus 262144 zur Verfügung stehenden Farben möglich, heute ist man bekanntermaßen bei 16,7 Mill. Farben angelangt, wo das Monitorbild Fotoqualität erreicht.
Sinnvolle Grenze für den KC sind Grafiken mit max. 16 verschiedenen Farben. Wie bekommt man nun die Farbinformationen der einzelnen Bildpunkte in den IRM des KC? Holger Joedicke hat hier (ob bewußt oder unbewußt weiß ich nicht!?) den folgenden Weg gewählt. Farbige Bilder werden grundsätzlich in den HIRES-Mode des KC 85/4 konvertiert. Dort besteht der große Vorteil, daß man jedem Pixel eine aus vier zur Verfügung stehenden Farben zuordnen kann. Das kommt dem PCX-Format entgegen aber nur ein kleines Stück, weil sich diese 4 Farben nicht ändern lassen, sie sind durch die Hardware des KC fest vorgegeben.
Es hätte also auch nicht viel Sinn, die Farbpalette zu analysieren und zu versuchen, ädequate Bildpunkte in sw/rt/tü/wß zu finden und zu konvertieren, man weiß vorher ja nicht, ob diese 4 Farben überhaupt im Bild enthalten sind! 4PCX092.KCC ignoriert deshalb den Inhalt der Farbpalette und nutzt nur die Indizes für die Konvertierung (s.o.). Da nur vier Farben darstellbar sind, gehen beim Konvertieren des Originalbildes immer dann Informationen verloren, wenn dieses mehr als 4 Farben verwendet:
KC-Darstellung PCX-Indizies auf Position in Farbtabelle
4 8 16 (verwendete Farben)
sw 0 0 0 rt 1 1 1 tü 2 2 2 wß 3 3 3 sw 4 4 rt 5 5 tü 6 6 wß 7 7 sw 8 rt 9 tü 10 wß 11 sw 12 rt 13 tü 14 wß 15
Die Aufstellung macht deutlich, will man ein mehrfarbiges PCX-Bild auf den KC bringen, erzielt man die besten Ergebnisse, wenn es nur 4 verschiedene Farben verwendet! Dann erscheinen alle verschiedenfarbige Punkte des Bildes auch in einer unterschiedlichen Farbe auf dem KC, so daß alle Details erhalten bleiben, Abstriche muß man nur in der Farbtreue machen, da es eben nur sw/rt/tü/wß gibt. Sind mehr Farben im Bild vorhanden, gehen Farbinformationen verloren und es kann passieren, daß ganze Bereiche die im Originalbild eine unterschiedliche Farbe hatten, auf dem KC gleich aussehen und damit im ungünstigen Fall die eigentliche Bildinformation bis zur Unkenntlichkeit verfremden.
Vorbearbeitung von Bildern auf dem PC
Soviel zur Theorie, kommen wir zur Praxis, Bilder gibt es wie Sand am Meer für den PC. Die rasche technische Entwicklung der letzten Jahre macht es aber zunehmend schwieriger, geeignete Bilder für den KC aufzutreiben. Das liegt zum einen an der Bildgröße, die meisten Dateien sind größer als 320*256 Bildpunkte und an der Farbtiefe, zunehmend werden Dateien mit 256, auf Photo-CD's beispielsweise nur noch mit 16,7 Mill. Farben unter das Volk gebracht.
In beiden Fällen ist es sinnvoll die Dateien bereits auf dem PC (ich weiß - nur wer hat, der kann - aber wer weiß, wo einer steht, kann auch!) vorzubereiten. Alle Hinweise beziehen sich auf Bitmap- bzw. Pixelgrafiken. Zunehmend erobern ja auch die vektororientierten Programme, wie CorelDRAW, den heimischen PC, derartige Dateien müssen vorher in das PCX- oder ein anderes Pixelformat exportiert werden, wobei gleich die KC-Bildschirmgröße (meist wählbar) angegeben wird, dann treten keine Skalierungsverluste auf und die Detailqualität bleibt voll erhalten! Die nachfolgend aufgeführten Programme erhält man auf gängigen Zeitschriften CD's, im Vierteljahresabstand erscheint z.B. die In'side Shareware mit CD im TRONIC-Verlag.
Zum Verkleinern ist fast jedes PC-Grafikprogramm in der Lage, allerdings mit unterschiedlichen Ergebnissen bezüglich der Qualität. Es wird zwar viel über PAINTBRUSH von Windows 3.1 gelästert, ich nutze es nach wie vor zum Verkleinern von großen sw/wß-Bildern (nicht für farbige Bilder!), da es dort über eine Kantenglättung verfügt und nicht einfach alle übrigbleibenden Pixel verschluckt, eine Linie bleibt so meist auch auch nach der Verkleinerung geschlossen. Farbige Bilder verkleinert man beispielsweise mit Programmen wie PAINTSHOP Pro f. Windows (Shareware, ab Version 3.0 sind dort auch Malwerkzeuge vorhanden, womit man kleinere Korrekturen schnell per Hand durchführen kann, außerdem kann dieses Programm nahezu jedes Pixelformat lesen, so daß es sich hervorragend als Konvertierungstool in das PCX-Format eignet).
Der zweite notwendige Schritt besteht darin, die erforderliche Farbtiefe (Anzahl verwendeter Farben im Bild) herzustellen. !Wichtig! Muß ein Bild auch verkleinert werden, ist dies zuerst durchzuführen, erst dann die Farbreduktion!!! Beim Reduzieren der Farben ist die Auswahl schon schwieriger, da nur die allerwenigsten Programme in der Lage sind, ein Bild bis auf die für 4PCX092.KCC optimalen 4 Farben herunterzurechnen (s. o.), meistens sind abwärts nach 16 nur noch 2 (sw/wß) möglich, dazwischen nichts.
Meine uneingeschränkte Empfehlung gilt hier GRAPHIC WORKSHOP for Windows (Shareware, aktuelle Version 1.1r unter Windows 3.1). Dieses Programm bietet neben vier verschiedenen Berechnungsverfahren auch alle Zwischenschritte (16/8/4/2) bei der Farbreduktion an und ist wie geschaffen für den KC. Auf der CD von In'side Multimedia EXTRA 2/96 (erscheint auch vierteljährlich im TRONIC Verlag) habe ich vor kurzem ein zweites Sharewareprogramm gefunden, BRENDA 2.0, welches das auch kann und gute Ergebnisse liefert.
Falls jemand andere Programme verwendet, sollten die PCX-Dateien in Version 3.0 gespeichert werden, wenn das Programm eine derartige Auswahl zuläßt!
Konvertierung auf dem KC mit 4PCX092.KCC
Zum Konvertieren der Bilder sind diese auf eine KC-Diskette (CAOS-Format) zu bringen, dazu stehen mittlerweile genug Programme zur Verfügung, auf dem PC z.B. 22DISK oder SUPERCOPY, auf dem KC bekanntermaßen TRANSFER.COM, die Übertragung per Nullmodemkabel o. ä. scheitert noch am Nichtvorhandensein komfortabler Programme, speziell auf der KC-Seite.
Da Holger Joedicke freundlicherweise den Quelltext für 4PCX090.KCC zur Verfügung gestellt hatte, gab es schon mal eine überarbeitete Version namens 4PCX091, welche ich einigen Usern zur Verfügung gestellt hatte, sie befand sich aber noch nicht auf den Beilagedisketten der News. Dafür gibt es aber heute auf der Beilagediskette 4PCX092.KCC - die allerneueste Überarbeitung, angeregt durch BRENDA 2.0 habe ich gegenüber Version 091 nochmals Erweiterungen vorgenommen:
- liest jetzt PCX-Versionen 2.5, 2.8 (4 Bit pro Pixel in 1 Ebene) und alle Varianten der Version 3.0 (1 Bit pro Pixel 1...4 Ebenen)
- Bilder mit mehr als 16 Farben werden nicht gelesen (Fehlermeldung)
- neue Funktion >C<, tauscht Inhalt von Pixel- und Color-IRM während der Anzeige des Bildes (HIRES-Mode)
- während das Bild von Diskette gelesen und aufgebaut wird, kann mit >BRK< abgebrochen werden, das bis dahin gelesene Bild ist verfügbar
- 256. Zeile des Quellbildes wird jetzt auch gelesen und konvertiert (Fehler noch aus 4PCX090.KCC)
- es werden auch unkomprimierte PCX-Dateien gelesen und konvertiert
Damit dürften sich jetzt alle gängigen Bilder bis zu 16 Farben lesen und anzeigen lassen, wie oben schon gesagt, erzielt man die besten optischen Ergebnisse, wenn im Quellbild nur 4 verschiedene Farben zum Einsatz kommen. 4PCX092.KCC läuft unter CAOS nur auf dem KC 85/4. Es enthält ein eigenes Menüsystem, deshalb möchte ich zur Bedienung nicht viel sagen. Man kann auch PCX-Bilder lesen, welche größer als 320*256 Bildpunkte sind, es wird dann immer ein Ausschnitt dieser Größe angezeigt und nach >F2< auch nur dieser Ausschnitt gespeichert. Hatte das Quellbild 2 Farben, wird eine PIP- Datei geschrieben, bei mehr Farben immer eine HIP/HIF-Datei.
Nachdem man das Programm gestartet hat, konvertiert man die eingestellte PCX-Datei über >ET<, sie wird zeilenweise gelesen und gleichzeitig am Bildschirm dargestellt. Mit den >CUT< kommt man immer 8 Pixel weiter in die jeweilige Richtung, mit >SH+CUT< bis zum entsprechenden Rand des PCX-Bildes, wenn es größer als 320*256 Bildpunkte ist. Dazu wird die Datei allerdings auch immer neu von Diskette gelesen, was entsprechend dauert. Steht der Ausschnitt fest, kann man bei farbigen Bildern bei Notwendigkeit mit einigen Tasten (siehe >?<-Funktion) noch Farbvertauschungen vornehmen und bei Gefallen dann über >F2< eine KC-Bilddatei auf die Diskette schreiben.
Weiterverwendung auf dem KC und Ausblick
Nachdem man alle diese Hürden gemeistert hat, befindet sich dann endlich das gebrauchsfertige KC-Bild auf der Diskette und kann weiterverarbeitet werden. Da ich selbst ziemlich ideale Arbeitsbedingungen habe, sind auf diesem Wege bereits fast 9 CLIPART-Disketten entstanden, vor kurzem ist eine Schallmauer gefallen, die 1000!!!, zusammen mit den alten "EDIPIC"-Bildern stehen zur Zeit bereits 1052 KC-Bilder zur Verfügung. Ich will damit vor allem Support für "UNIPIC" betreiben. Eine Nutzung ist aber auch in anderen Programmen möglich, z.B. WordPro 6.0, ML.COM, DIASHOW 1.1, EDIPIC 33 (PIP/PIF-Dateien auch für KC 85/3) oder auch zur Verwendung in eigenen Programmen, wie es Herr Riehl in seinen BASIC- Programmen praktiziert.
Das Grundprinzip der Originalversion 4PCX090.KCC habe ich noch nicht verändert, mit dem jetzigen Stand sind allerdings die Konvertierungsmöglichkeiten im HIRES-Mode ausgereizt. Angedacht sind bereits die versuchsweise Verwendung des LORES-Mode, um eventuell die 16 Farben nutzbar zu machen, es gibt dort natürlich zwangsläufig Konflikte mit der verminderten Farbauflösung von 1*8 Pixeln. Denkbar ist diese Variante vor allem für Zeichnungen oder cartoonähnliche Bilder, dort werden i. d. R. wenige Farben bzw. größere einfarbige Flächen verwendet, was der geringeren Auflösung entgegenkommt.
Ein wenig Nacharbeit ist zu verschmerzen, es entfällt dann aber ein Nachcolorieren des kompletten Bildes per Hand, was ja auch Talent erfordert - für alle, die es schon mal probiert haben! Weiterhin sollte auch der umgekehrte Weg mal realisiert werden, d.h. die Abspeicherung von KC-Bildern im PCX-Format auf dem KC. Das wäre schon heute dringend erforderlich, dann könnten die Beiträge in den News mit Abbildungen aufgewertet werden, welche jeder auf seinem KC erstellen kann, mit Bildern lassen sich ja meist Zusammenhänge anschaulicher und besser darstellen, bei Schaltplänen u. ä. geht es kaum anders.