Dans PLRM d'Adobe J'ai trouvé l'exemple suivant en utilisant l'opérateur imagemask
. Cela fonctionne correctement avec Ghostscript.Erreur PostScript avec imagemask et données brutes
54 112 translate % Locate lower-left corner of square
120 120 scale % Scale 1 unit to 120 points
0 setgray % Set current color to black
24 23 % Specify dimensions of source mask
true % Set polarity to paint the 1 bits
[24 0 0 -23 0 23] % Map unit square to mask
{< 003B00 002700 002480 0E4940
114920 14B220 3CB650 75FE88
17FF8C 175F14 1C07E2 3803C4
703182 F8EDFC B2BBC2 BB6F84
31BFC2 18EA3C 0E3E00 07FC00
03F800 1E1800 1FF800 >}
imagemask
showpage
En guise d'exercice, j'ai essayé de réécrire l'exemple ci-dessus en utilisant un ImageType-1 dictionnaire et les données brutes, et enfin est venu avec ce code:
54 112 translate
120 120 scale
0 setgray
<<
/ImageType 1
/Width 24
/Heigth 23
/BitsPerComponent 1
/Decode [1 0]
/ImageMatrix [24 0 0 -23 0 23]
/DataSource currentfile /ASCIIHexDecode filter
>>
imagemask
003B00 002700 002480 0E4940
114920 14B220 3CB650 75FE88
17FF8C 175F14 1C07E2 3803C4
703182 F8EDFC B2BBC2 BB6F84
31BFC2 18EA3C 0E3E00 07FC00
03F800 1E1800 1FF800>
showpage
Cependant, lors de l'exécution de cette Ghostscript I obtenez l'erreur suivante. Je me gratte toujours la tête pour trouver le bug, mais en vain. Comment peut-il être imagemask
est indéfini? Ou est-ce que j'ai manqué quelque chose d'évident?
Un indice du message d'erreur est le '--' ...' '' autour de 'imagemask'. Les traits d'union signifient que c'est l'opérateur * imagemask * qui frappe une erreur indéfinie (* dans * l'opérateur). Si c'était juste le nom nu, comme 'Erreur:/undefined in imagemask', cela signifierait que le nom n'a pas été défini. –
@luserdroog ok, donc c'était l'opérateur 'imagemask' qui frappait l'erreur'/undefined' parce que 'Height' n'était pas défini dans le dictionnaire. –
Un avantage des anciennes formes * proc * de 'image' et 'imagemask' est que vous pouvez échanger l'appel avec' exec' pour déboguer le processus .. –