Vorangegangene Version von bmeps erstellten eine EPS-Ausgabe nach
ungefähr folgendem Schema:
\begin{lstlisting}
/pstr 128 string def
/inputf currentfile /ASCII85Decode
filter /RunLengthDecode filter def
gsave
0 128 translate 128 128 scale
128 128 8 [128 0 0 -128 0 0] { inputf pstr readstring pop } image
K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&\,QR/mHa_*rrq/DNK'1UM#RM<Nr4k:ied[8
% .... weitere codierte Daten
K)`=[
~>
grestore
currentdict /inputf undef currentdict /pstr undef
\end{lstlisting}
Nachteilig ist hierbei, dass einige PS-Anweisungen noch nach den
komprimierten und codierten Image-Daten stehen. Kommt es bei der Decodierung
der Image-Daten zu Fehlern, liest der PS-Interpreter an der Stelle in
den codierten Daten weiter, an der der Abbruch erfolgte. Die codierten
Daten, die dann gelesen werden, ergeben keine sinnvollen PS-Anweisungen,
also wird der Interpreter mit einer Fehlermeldung abbrechen.

Weiterhin werden hier zwar durch die filter-Anweisungen Dateien geöffnet,
aber nicht wieder geschlossen.
\clearpage
Die Ausgabe von bmeps wurde mit der PS-Ausgabe anderer Programme verglichen,
hier ist insbesondere jpeg2ps hervorzuheben. Version 2.0.0 verwendet ein
Schema wie folgt:
\begin{lstlisting}
{
gsave
13 dict begin
/fa currentfile /ASCII85Decode filter def
/fb fa /FlateDecode filter def
/sr 128 string def /sg 128 string def /sb 128 string def
/DeviceRGB setcolorspace
0 128 translate 128 128 scale
<<
/ImageType 1
/Width 128 /Height 128 /ImageMatrix [128 0 0 -128 0 0]
/MultipleDataSources true
/DataSource [
{ fb sr readstring pop }
{ fb sg readstring pop }
{ fb sb readstring pop }
]
/BitsPerComponent 8
/Decode [0 1 0 1 0 1]
/Interpolate true
>>
image
fb closefile
fa flushfile fa closefile
end
grestore
} exec
J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H
?K;B=Q#WO;koDO!%M.<jFY8C$]2rn<?/*&:mfh[_=,uiX>KqH^7HqKeXM^,2~>
\end{lstlisting}
Mit der exec-Anweisung ist dem PS-Interpreter bereits die ganze Prozedur
bekannt -- einschließlich der Aufräumarbeiten zum Schließen von Dateien
und dem "`Aufessen"' des codierten Datestromes -- bevor mit der
Image-Decodierung begonnen wird. Tritt bei der Decodierung ein Fehler
auf oder werden nicht alle Daten aus dem Datenstrom benötigt, werden
trotzdem alle Dateien geschlossen und der Datenstrom aufgebraucht, bis
das Datenende-Zeichen "`\textasciitilde{}>"' auf der untersten Ebene gefunden wird.
Anschließend setzt der PS-Interpreter seine Arbeit normal fort.
\clearpage
